我試圖獲得一個唯一的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. 如何獲得知道線程ID的消息線程URL?
- 3. 如何從消息ID中獲取消息。
- 4. 使用imaplib獲取錯誤
- 5. 如何獲得離線消息的JABBERID
- 6. 使用Python中的imaplib在Gmail中創建草稿消息
- 7. 如何獲得使用手柄的Flash消息?
- 8. 如何獲得id onclick listview使用android
- 9. 如何使用JavaScript獲得選項ID?
- 10. 如何使用scala獲得此信息
- 11. 如何獲得用NDK應用程序編寫的「printf」消息?
- 12. Django的休息,framerwork串行如何獲得用戶ID
- 13. 從gmail api的'message id'中獲得消息
- 14. (Unity AWS SDK)未能獲得Google雲消息註冊ID
- 15. IMAP,使用消息ID跟蹤移動的消息
- 16. 使用Retrofit進行Firebase設備到設備消息傳遞,我如何獲取消息ID?
- 17. 如何獲得最後的x facebook消息+用php回答?
- 18. 如何獲得發佈給定消息的iframe的引用?
- 19. Rails Model.where如何獲得ID?
- 20. JQuery:如何獲得DID ID?
- 21. 如何從imap中檢索具有一致id的特定消息(消息ID)
- 22. 如何使用imaplib從python電子郵件獲取純文本
- 23. 如何捕獲Windows消息?
- 24. 使用php-imap庫獲取GMAIL消息ID
- 25. 如何查看消息的語言ID?
- 26. 如何在GrayLog2 API響應中獲取消息ID(哈希)?
- 27. 如何獲取最舊的消息ID GMAIL API
- 28. 如何獲得受邀用戶的ID?
- 29. 如何獲得signed_request中的用戶ID?
- 30. 在消息ID上過期JMS消息
運行過程中是否不發送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