我試圖獲得一個唯一的ID,它在操作過程中沒有改變。我認爲UID不好。所以我認爲'消息ID'是正確的,但我不知道如何得到它。我知道只是imap.fetch(uid,'XXXX'),任何人都有一個解決方案?如何使用imaplib獲得'消息ID'
回答
來自IMAP文檔本身:
IMAP4消息號碼隨郵箱更改而變化;特別是在EXPUNGE命令執行刪除操作後,剩餘的消息將被重新編號。因此,使用UID命令來代替使用UID是非常明智的。
討論在SO:About IMAP UID with imaplib
IMAP4.fetch(message_set, 'UID')
獲取是得到消息的UID的最佳方法
而且讓你可以做一些這樣的事情的消息ID,雖然不是所有的消息可能有一個消息ID。
server.select(imap_folder)
# List all messages
typ, data = server.search(None, 'ALL')
# iterate through messages
for num in data[0].split():
typ, data = server.fetch(num, '(BODY[HEADER.FIELDS (MESSAGE-ID)])')
# parse data to get message id
@pyfunc:但是您接受的問題的答案是「注意:UID已更改,但郵件標識在該郵件的任何操作過程中不會更改」)。 – 2010-09-23 05:48:46
是的,IMAP lib文檔與討論相矛盾 – pyfunc 2010-09-23 05:58:58
UID不會改變,但與將消息移動到另一個郵箱的討論相關的問題。移動之後,UID會有所不同 - 這是一個真正的新消息在不同的位置。 – 2010-09-23 07:36:20
你可以試試這個python代碼來獲取所有郵件的標題信息。
import imaplib
import email
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('folder_name')
resp,data = obj.uid('FETCH', '1:*' , '(RFC822.HEADER)')
messages = [data[i][1].strip() + "\r\nSize:" + data[i][0].split()[4] + "\r\nUID:" + data[i][0].split()[2] for i in xrange(0, len(data), 2)]
for msg in messages:
msg_str = email.message_from_string(msg)
message_id = msg_str.get('Message-ID')
有這個更容易的方法...
typ, data = obj.fetch(num, '(BODY[HEADER.FIELDS (MESSAGE-ID)])')
msg_str = email.message_from_string(data[0][1])
message_id = msg_str.get('Message-ID')
print message_id
希望這有助於!
result, data = imapconnection.uid('search', None, "ALL") # search and return uids instead
latest_email_uid = data[0].split()[-1]
result, data = imapconnection.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]
如果您在帖子中添加了一些解釋,這將會很有幫助。在編程任何語言或系統時,它背後的*邏輯*是最重要的,而實際的*代碼*僅次於邏輯 - 理解邏輯可以幫助人們學習如何自己編寫這些代碼,並調整它以適應他們的需求。 – CodeMouse92 2015-09-24 19:37:27
- 1. Python/imaplib - 如何獲取消息的標籤?
- 2. 只有Internet消息ID值獲得Outlook消息(使用VSTO,EWS或贖回)
- 3. 如何獲得知道線程ID的消息線程URL?
- 4. 如何從消息ID中獲取消息。
- 5. 如何使用Mail :: send()獲取Mandrill消息ID Laravel 4
- 6. 使用imaplib獲取錯誤
- 7. 使用Python中的imaplib在Gmail中創建草稿消息
- 8. ARP消息如何獲得IP
- 9. 如何獲得消息控制?
- 10. 如何獲得form.errors的確切消息?
- 11. 如何獲得離線消息的JABBERID
- 12. 如何獲得DEFAULT ERROR消息以及自定義RAISERROR消息
- 13. 從GCM消息獲取ID
- 14. 如何獲得排隊使用ServiceThrottlingBehavior時的消息
- 15. 如何在使用UpdatePanel時獲得真正的異常消息?
- 16. 如何使用的FormatMessage C++爲獲得英語只有消息
- 17. 使用組播協調對等消息,如何獲得IP?
- 18. 如何獲得使用手柄的Flash消息?
- 19. 如何使用JavaScript獲得選項ID?
- 20. 如何獲得id onclick listview使用android
- 21. 如何使用scala獲得此信息
- 22. ActiveSync獲取命令。如何獲取消息ID
- 23. 如何獲得用NDK應用程序編寫的「printf」消息?
- 24. Django的休息,framerwork串行如何獲得用戶ID
- 25. 從gmail api的'message id'中獲得消息
- 26. (Unity AWS SDK)未能獲得Google雲消息註冊ID
- 27. IMAP,使用消息ID跟蹤移動的消息
- 28. 使用Retrofit進行Firebase設備到設備消息傳遞,我如何獲取消息ID?
- 29. 如何在ajax調用後立即獲得flash消息?
- 30. 如何獲得最後的x facebook消息+用php回答?
運行過程中是否不發送ID更改? – 2010-09-23 05:39:28
@ Manoj Govindan:不,在任何操作過程中,Message-Id都不會改變。 – Avadhesh 2010-09-23 09:18:23
它在會話之間切換 - UID保持不變 - 對嗎? – mrmnmly 2016-10-26 08:30:44