我正在尝试访问Gmail帐户以在PHP应用程序中导入已发送和已接收的邮件。 每次导入后,我都会存储当前日期,以便不会每次都导入所有邮件。
// $this->dateLastSynchro is a DateTime object
$searchCriteria = 'NEW UNDELETED SINCE "' . $this->dateLastSynchro->format('r') . '" ';
$return = imap_search($this->mailBoxHandle, $searchCriteria);
第一次导入正常(当我使用"ALL UNDELETED"
时),但是当我使用SINCE时,我从来没有结果(即使我已经发送或收到新邮件)。
我曾尝试使用格式Y-m-d
作为日期,但我在执行此操作时会发出PHP通知(它表示无法识别的标准)。
感谢您的帮助。
修改
Max建议的解决方案工作正常,但我不能接受答案,因为这是一个评论。
答案 0 :(得分:1)
以下对我来说很好:
$imap = imap_open('{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX', "me@gmail.com", "qqqqqqqqqqqqqqqqqq");
$search = imap_search($conn, 'ALL UNDELETED SINCE "28-OCT-12"', SE_UID);
(请注意,PHP的imap API仅使用c-client库中的mail_criteria()函数,因此使用IMAP2样式的“SEARCH”命令而非IMAP4,原因是来自c-client维护者的阻力(s )提供用于将SEARCH命令解析为SEARCHPGM的通用API。)
答案 1 :(得分:0)
也许你应该存储你得到的最后一个UID。当邮件添加到邮箱时,UID肯定会增加。