【问题标题】:IMAP: from UID of message to folder name?IMAP:从消息的 UID 到文件夹名称?
【发布时间】:2015-09-23 18:45:05
【问题描述】:

我正在使用 Python 连接到 IMAP 服务器。

我有一个特殊消息的 UID。

有没有办法获取包含此 UID 的文件夹名称?

或者一个 UID/消息可以在多个文件夹中?然后,我想获取该邮件所属的文件夹列表。

或者我误解了什么。 UID 始终位于 IMAP 文件夹的本地。它仅在文件夹的上下文中有效。

我使用ImapClient 连接到 IMAP 服务器。但是在这个级别上,所有语言及其绑定应该是相同的(我的猜测)。

【问题讨论】:

    标签: python email imap imaplib uid


    【解决方案1】:

    uid 在文件夹之间不是唯一的。只有(文件夹名称,uid有效性,uid)这三者保证是唯一的。

    对于大多数服务器软件(尤其是传统的 UNIX IMAP 服务器),uid 在每个文件夹上单调递增地生成,并且重叠。也就是说,任何文件夹中的第一条消息都是 UID 1,第二条消息是 UID 2,依此类推。显然 Sent:UID-1 与 Inbox:UID-1 不是同一条消息。

    某些服务器确实会生成帐户唯一的 UID(例如 yahoo),但这是例外情况,而不是常态。

    Gmail 有一个额外的帐户唯一属性,即 X-GM-MSGID,在他们的IMAP extensions document 中有描述。

    【讨论】:

      【解决方案2】:

      我自己找到了答案:

      http://www.limilabs.com/blog/unique-id-in-imap-protocol

      要在所有文件夹中识别消息,您需要 3 个变量:UID、 文件夹名称和 FolderStatus.UIDValidity。

      ...

      在大多数现代服务器中,FolderStatus.UIDValidity 很少更改。然而客户 记住会话之间的消息 UID 必须处理此类更改,并且 采取相应的行动。

      结果:您无法从 UID 中获取文件夹名称。

      【讨论】:

      • 你引用的内容与你的结论相反。
      • @max 谢谢!这是一个错字。我修好了它。当然,我的意思是“您无法从 UID 中获取文件夹名称。”
      猜你喜欢
      • 1970-01-01
      • 2010-10-10
      • 2018-04-29
      • 2018-12-15
      • 2011-02-02
      • 2011-09-04
      • 1970-01-01
      • 2011-06-28
      • 2021-07-01
      相关资源
      最近更新 更多