2014-06-18 56 views
0

我在全新的測試IMAP文件夾中創建了5條消息。然後消息3被刪除,所以剩餘消息的UID是[1,2,4,5]。使用UID使用IMAP

現在我試圖列出從某個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

在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']