2

我正在尝试访问 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 通知(它说类似 Unrecognized 标准)。

感谢帮助。

编辑

Max建议的解决方案效果很好,但我不能接受答案,因为它是评论。

4

2 回答 2

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() 函数,因此由于 c-client 维护者提供的阻力,因此使用 IMAP2 样式的“SEARCH”命令而不是 IMAP4用于将 SEARCH 命令解析为 SEARCHPGM 的通用 API。)

于 2012-10-30T18:58:39.460 回答
0

也许您应该存储您获得的最后一个 UID。随着邮件添加到邮箱,UID 肯定会增加。

于 2012-10-31T15:57:52.663 回答