【问题标题】:IMAP mailbox identifierIMAP 邮箱标识符
【发布时间】:2013-03-01 03:50:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: php email imap uid


    【解决方案1】:

    这正是UIDVALIDITY 的用途。这是一个标识文件夹名称的化身的“cookie”。当您SELECT 一个文件夹时,它会发送给您。你应该保存它,如果它改变了,你就扔掉你知道的关于那个文件夹的所有东西。

    如果需要,请参阅 RFC 3501 了解更多详细信息。

    【讨论】:

    • 那么 UIDVALIDITY 会返回一个字符串或整数,它会为文件夹提供一个唯一的标识符?
    • 它是一个整数,是的,如果它是同名文件夹的新化身,它应该会改变。
    【解决方案2】:

    我建议您存储mail size 也对应于uids。如果您的cient 上存储的最大uid 大于服务器返回的最大uid(文件夹删除情况),请比较uid 和相应的邮件大小。

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2021-05-21
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2016-01-28
      相关资源
      最近更新 更多