I 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. Par exemple, 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