1

我正在开发应该从 IMAP 服务器获取电子邮件并将它们存储在本地数据库中的 PHP 项目。其他电子邮件客户端(如发件箱等)可以使用相同的 IMAP 服务器。

问题是如何知道我已经获取了哪些消息,而我没有获取哪些消息?我正在考虑使用按日期时间搜索,但它是否可靠(我会有 cronjob,它会每分钟访问用户邮箱,并检查电子邮件,但不确定日期时间是否会导致一些问题,例如在几乎同时到达短消息和带有大附件的消息)。

我在考虑系统标签,但是用户可以通过电子邮件客户端修改它们,所以我可以依赖它们,并且不想修改它们并混淆客户端。

接下来我在考虑自定义标签,但并非所有 IMAP 服务器都支持它们(我们的软件需要尽可能灵活)。

有什么好主意我可以解决这个问题吗?

4

1 回答 1

3

跟踪您正在同步的文件夹的当前最高同步UID,并验证文件夹的 UIDVALIDITY 值是否匹配。

唯一标识符在邮箱中以严格的升序方式分配;当每条消息被添加到邮箱时,它被分配一个比之前添加的消息更高的 UID。与消息序列号不同,唯一标识符不一定是连续的。

于 2012-04-14T05:51:58.660 回答