将已解析的电子邮件标记为“已解析”的最佳方法是什么?只是删除它们?

时间:2013-01-18 17:34:19

标签: php codeigniter email

我正在为网站编写电子邮件解析器,但我不确定最佳做法。具体来说,我不确定如何标记我已经解析过的电子邮件,所以每次访问邮箱时都不会访问它们。

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:”还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

  1. 蓬勃发展:哇...这比PHP的功能更有帮助。您必须从IMAP外部存储消息UID,以跟踪是否已处理某些内容。

  2. PHP / CodeIgniter:CI似乎没有IMAP库,因此您使用的是PHP函数。 imap-setflag-full()将允许您在邮件上设置\Flagged标记,您可以使用该标记来跟踪邮件是否已被处理。

  3. 自定义套接字代码:您可以使用类似this code的内容来设置/获取自定义IMAP标记,但您可能必须阅读少数IMAP RFC以使其他所有内容正常工作。