Php 将已解析的电子邮件标记为“电子邮件”的最佳方式是什么;已解析的"。。删除它们?

Php 将已解析的电子邮件标记为“电子邮件”的最佳方式是什么;已解析的"。。删除它们?,php,codeigniter,email,Php,Codeigniter,Email,我正在为一个站点编写一个电子邮件解析器,但我不确定是否有最佳实践。具体来说,我不知道如何标记我已经解析过的电子邮件,因此我不会每次访问邮箱时都访问它们 PS-我从未做过任何电子邮件解析 到目前为止,我正在使用Flow库(以及Codeigniter),使用cron作业调用cronjobs/parseMail public function parseMail(){ // Connect to a remote imap server $mailbox = new fMailbox(

我正在为一个站点编写一个电子邮件解析器,但我不确定是否有最佳实践。具体来说,我不知道如何标记我已经解析过的电子邮件,因此我不会每次访问邮箱时都访问它们

PS-我从未做过任何电子邮件解析

到目前为止,我正在使用Flow库(以及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:”还是有更好的方法

  • 哇。。。这甚至不如股票PHP函数有用。您必须从IMAP外部存储消息UID,以跟踪是否处理了某些内容

  • PHP/CodeIgniter:CI似乎没有IMAP库,所以您使用的是PHP函数。将允许您在邮件上设置
    \Flagged
    标志,您可以使用该标志跟踪邮件是否已处理

  • 自定义套接字代码:您可以使用诸如设置/获取自定义IMAP标志之类的功能,但您可能需要阅读一些IMAP RFC才能使其他功能正常工作


  • 您可以将它们散列并存储在数据存储中。我认为Flow的优势在于listMessages为您提供了一个消息UID数组,每个键的值都是不同消息部分的数组。它似乎很有用,或者至少是访问IMAP的最简单的库,因为CI什么都没有。你不喜欢凭经验写的文章,还是仅仅根据你在这里看到的内容写的评论?@K.K.Smith实际上我在fMailbox上查阅了这些文章。可以肯定,它比内置的PHP函数简单,但就我所见,它并没有真正添加任何内容。当您看到更为深奥的特性(如自定义标志)时,PHP通常具有糟糕的IMAP支持,我还没有看到任何基于套接字的解决方案能够更好地支持它。真的,如果你已经解析了邮件,并且从来没有打算对它做任何其他事情,那么就删除它,让你的电子邮件服务器管理员高兴。好的。谢谢你的反馈!