I’ve installed PHP 5.2 at one of my testing computers today and a couple of bits of code that previously worked fine in version 5.1.6 threw fatal errors in the new version. The error message was “Nesting level too deep – recursive dependency?” and it took a little time » Read more: PHP Error Nesting Level Too Deep Recursive Dependency
Archive for March, 2010
How to receive and parse emails using POP3 and PHP
March 1st, 2010I would like to describe some methods on how to write the processor for incoming mail. I had to use such manipulation to parse e-mails received from various sources. This can be useful for writing your own spam filter system, answering machine or ticket system to receive applications by e-mail.
To implement the e-mail parser algorithm we need
- connect and log-on to e-mail server
- count the number of incoming letters
- recive e-mail from the server using POP3 protocol
- process the e-mail headers and body and make parsing
- … implement any additional actions
Ok, there is very specific task for PHP coding, so we need hosting that supports external connection. I do not propose to write decision entirely because much has been realized by talented programmers already. For example, you can take a ready module which will allow accept e-mails from a remote server.
Thank’s to Manuel Lemos and his module (php class) which named pop3.php.
To connect that class to your code, you just need to use include or require command: require(“pop3.php”);
require("pop3.php"); $hostname = 'pop3.mail.com'; $port = '110'; $user = 'pop3-username'; $accesscode = 'pop3-password'; // Create the class connection $pop3_connection=new pop3_class; // Specify the hostname $pop3_connection->hostname=$hostname; $result=$pop3_connection->Open(); // We are trying to open connection and display the result echo $result; // Trying to logon and display the error if any appear $error=$pop3_connection->Login($user,$accesscode,$apop); if ($error<>'Password error: Logon failure: unknown user name or bad password.') {echo $error; exit;} // Now get the statistic how many emails are stored and the size of them $result=$pop3_connection->Statistics($messages, $size); echo "$hostname contains $messages of $size bytes."; //..... There we can receive e-mails in the cycle and parse them.... // // If nothing to do - we can close the connection $error=$pop3_connection->Close(); // echo $error; ?>
Now we know how to connect and log-on to the POP3 server and how to request the number of Inbox e-mails and them sizes. Next, we should receive each e-mail and parse the headers and body array.
TO BE CONTINUED