使用UID使用IMAP

时间:2014-06-18 21:55:28

标签: python imap

我在一个全新的测试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']”。

我错过了什么?

1 个答案:

答案 0 :(得分: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']