【问题标题】:How to duplicate an IMAP mailbox如何复制 IMAP 邮箱
【发布时间】:2009-10-16 17:51:18
【问题描述】:

我想创建一个可以访问多个 IMAP 邮箱的电子邮件客户端。我还想要一份所有电子邮件的副本以供处理。使用 IMAP 命令执行此操作的最佳方法是什么?

现在我有一个遍历文件夹的脚本,在 1:* 上获取 FLAGS 以查看已阅读的内容,如果任何以前阅读的消息已标记为新消息,则 FETCH BODY.PEEK 对我没有的所有消息在我的数据库中没有。有没有更好的办法?

【问题讨论】:

    标签: imap email-client


    【解决方案1】:

    更好的方法是获取所有消息的 UID(UID FETCH 1:* FLAGS),将生成的 UID 列表与您的数据库进行比较,然后下载您没有的任何消息并删除除服务器之外的所有消息没有(例如,被其他 IMAP 客户端删除或使用 Web 界面删除)。这是复制 IMAP 文件夹 AFAIK 的唯一可靠方法。 (别忘了将 UIDVALIDITY 也考虑在内!)

    如果除了您的应用程序之外还有其他 IMAP 客户端访问邮箱,您的原始方法将无法正常工作。从理论上讲,如果您可以保持与 IMAP 服务器的持续连接,使用 NOOP 和 IDLE 检查新邮件和已删除邮件,那就可以了,但这在实践中是不可能的——即使 GMail 没有 100% 的正常运行时间 :-)

    最终的 IMAP 客户端将结合这两种方法。

    【讨论】:

      猜你喜欢
      • 2013-03-01
      • 2019-05-24
      • 2021-05-21
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多