【问题标题】:Working with IMAP using UIDs使用 UID 处理 IMAP
【发布时间】:2014-06-18 21:55:27
【问题描述】:

我在一个全新的测试 IMAP 文件夹中创建了 5 封邮件。然后消息 3 被删除,所以剩余消息的 UID 为 [1, 2, 4, 5]。

现在我正在尝试列出从某个 UID 开始的所有消息。这是一段 Python 代码:

mail = imaplib.IMAP4_SSL(SERVER)
mail.login(LOGIN, PASSWORD)
mail.select('INBOX.Test.Subtest', readonly=True)

for i in range(5):
  resp, data = mail.uid('search', '%d:*' % (i+1))
  print i+1, resp, data

及其输出:

1 OK ['1 2 4 5']
2 OK ['2 4 5']
3 OK ['4 5']
4 OK ['5']
5 OK ['5']

所以第一个参数被解释为序列号,而不是 UID。行“4 OK ['5']”应为“4 OK ['4 5']”。

我错过了什么?

【问题讨论】:

    标签: python imap


    【解决方案1】:

    在仔细检查 RFC 3501 后,我得出了一个答案:

    resp, data = mail.uid('search', 'ALL', 'UID', '%d:*' % (i+1))
    

    因此,我们正在选择具有 UID 在该范围内的所有顺序 ID 的消息。

    修改后的程序的输出看起来像预期的那样:

    1 OK ['1 2 4 5']
    2 OK ['2 4 5']
    3 OK ['4 5']
    4 OK ['4 5']
    5 OK ['5']
    

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2017-04-18
      • 2012-10-06
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多