如何使用imap_search()只返回未读消息而不循环遍历每个消息?

时间:2017-05-18 19:36:04

标签: php imap pop3

由于POP3不支持IMAP安装中使用的SEEN标志,如何使用php的imap_search()方法仅检索来自服务器的新消息?这里有一些其他类似的帖子最终被视为死胡同,或者用户建议检查存储数据库的消息ID,但没有明确的方法只从POP3邮件服务器中提取新消息而不必提取所有消息和循环遍历每一个以查看它是否是新的。

我尝试使用以下内容设置标记:

$status = imap_setflag_full($inbox, $email_number, "\\Seen \\Flagged", ST_UID);

并使用此方法检索:

$emails = imap_search($inbox,'UNSEEN');

1 个答案:

答案 0 :(得分:0)

看起来POP3的工作方式使其成为PHP抓取的可怕候选者。大多数客户端在下载后从服务器中删除消息,并且只有最近的消息留在服务器上(理想情况下,一台计算机将从POP服务器中提取,没有多个设备可以接收的标签或状态)

不幸的是,除非其他人决定加入,否则在没有遍历所有旧邮件的情况下快速提取新邮件的唯一方法是在下载后从服务器删除邮件。 < / p>