IMAP邮箱标识符

时间:2013-03-13 09:33:13

标签: php email imap uid

我正在编写一个脚本,通过IMAP从电子邮件地址中提取所有电子邮件。

目前我正在获取每个文件夹(邮箱)并从每个文件夹中保存最高(获取的)UID,因此下次同步时我会以最高UID + 1开始获取。但是,如果单个文件夹被删除并且有人创建了具有相同名称的新文件夹,该怎么办呢? UID仅适用于单个文件夹,将被重置。

我似乎无法找到任何方法来查找邮箱(文件夹)的任何唯一标识符。

2 个答案:

答案 0 :(得分:1)

这正是UIDVALIDITY的用途。这是一个'cookie',用于标识文件夹名称的化身。当您SELECT文件夹时,它会发送给您。你应该保存它,如果它改变了,你就会丢弃你所知道的关于该文件夹的一切。

如果需要,请参阅RFC 3501以获取更多详细信息。

答案 1 :(得分:0)

我建议您存储与mail size对应的uids。如果存储在客户端的max uid大于服务器返回的max uid(文件夹删除情况),则比较uid和相应的邮件大小。

UID+1本身获取邮件的想法已经有很多瑕疵...... 如果通过某个其他界面(web / pop)或通过其他客户端从服务器删除了某组邮件,那么你将如何在imap客户端上同步它呢?我假设您将为此调用uid fetch命令...如果您这样做,那么您可以比较uids和邮件大小以进行交叉验证。

为了获得更好的结果,您也可以使用UIDVALIDITY的概念。但你不能依赖它,因为我已经看到一些没有正确使用它的imap服务器。