我在一个全新的测试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']”。
我错过了什么?
答案 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']