我正在研究应该从IMAP服务器获取电子邮件的PHP项目,并将它们存储在本地数据库中。 其他电子邮件客户端可以使用相同的IMAP服务器,例如发件箱等。
问题是如何知道我已经提取了哪些消息,哪些消息没有?我想通过datetime使用搜索,但它是否可靠(我会有cronjob,它会每分钟访问用户邮箱,并检查电子邮件,但不确定datetime是否会导致某些问题,例如在几乎是同时到达短信和大附件的消息)。
我在考虑系统标签,但是用户可以通过电子邮件客户端对其进行修改,因此我可以依赖它们,并且不想修改它们并使客户端感到困惑。
接下来我在考虑自定义标签,但并非所有IMAP服务器都支持它们(我们的软件需要尽可能灵活)。
有什么好主意我怎么解决这个问题?
答案 0 :(得分:3)
跟踪您正在同步的文件夹的当前最高同步UID,并验证该文件夹的UIDVALIDITY值是否匹配。
在邮箱中以严格升序的方式分配唯一标识符;当每条消息被添加到邮箱时,它被分配了比先前添加的消息更高的UID。与消息序列号不同,唯一标识符不一定是连续的。