我正在为网站编写电子邮件解析器,但我不确定最佳做法。具体来说,我不确定如何标记我已经解析过的电子邮件,所以每次访问邮箱时都不会访问它们。
PS - 我从未完成任何电子邮件解析。
我正在使用Flourish库(以及Codeigniter)所以到目前为止,我正在使用cron作业调用cronjobs / parseMail
public function parseMail(){
// Connect to a remote imap server
$mailbox = new fMailbox('imap', 'mysite.com', 'user', 'password');
// Retrieve an overview of all messages
$messages = $mailbox->listMessages();
foreach ( $messages as $message ){
$messageBody = $message['text'];
// parse it
}
}
所以,一旦我“处理”了一封电子邮件,我应该删除它吗?或者有更好的方法来确保我没有解析我已经完成的电子邮件吗?
奖金问题>我不需要在某处提供特定的电子邮件帐户吗?如果我有“admin@mysite.com”和“addressForParsing@mysite.com”那么,那里指的是我只对后者感兴趣?我只是从我的解析信息中拉出“To:”还是有更好的方法?
答案 0 :(得分:1)
蓬勃发展:哇...这比PHP的功能更有帮助。您必须从IMAP外部存储消息UID,以跟踪是否已处理某些内容。
PHP / CodeIgniter:CI似乎没有IMAP库,因此您使用的是PHP函数。 imap-setflag-full()
将允许您在邮件上设置\Flagged
标记,您可以使用该标记来跟踪邮件是否已被处理。
自定义套接字代码:您可以使用类似this code的内容来设置/获取自定义IMAP标记,但您可能必须阅读少数IMAP RFC以使其他所有内容正常工作。