[英]retrieve/search for emails using message ID through python IMAP
有沒有辦法通過python IMAP以編程方式使用消息ID檢索/搜索電子郵件。我想使用消息ID提取郵件的附件。 任何幫助將非常感激。
謝謝
謝謝大家過來幫我。 我終於搞定了。 我正在尋找一種方法來獲取具有給定 Message ID 的郵件附件,我不知道如何在 HEADER 選項或任何其他搜索選項中使用消息 ID 指定搜索命令。
我覺得這對像我這樣不熟悉 IMAP 並最終想要完成類似任務的人會有所幫助,我通過以下搜索命令獲得了它:
#message id
mid = '<CACDWeWHLGKbEHR-jMmx8da9QzkpPxC7Dizy6T4fm2V30JoHMuw@mail.gmail.com>'
#the search command
typ, data = imapSession.search(None, '(HEADER Message-ID "%s")' % mid)
您可以使用 imap_tools 包: https : //github.com/ikvk/imap_tools
如果您想通過 Message-ID 查找消息:
from imap_tools import MailBox, A, H
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
for msg in mailbox.fetch(A(header=H('Message-ID', 'a123406d-eaf2-58a4-be38@my.ru'))):
print(msg.date, msg.headers['message-id'])
但通常,您很可能需要一個“uid”
https://tools.ietf.org/html/rfc3501#section-2.3.1.1
一些例子:
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
# COPY all messages from current folder to folder1, *by one
for msg in mailbox.fetch():
res = mailbox.copy(msg.uid, 'INBOX/folder1')
# DELETE all messages from current folder, *in bulk (explicit creation of uid list)
mailbox.delete([msg.uid for msg in mailbox.fetch()])
# FLAG unseen messages in current folder as Answered and Flagged, *in bulk.
flags = (imap_tools.StandardMessageFlags.ANSWERED, imap_tools.StandardMessageFlags.FLAGGED)
mailbox.flag(mailbox.fetch('(UNSEEN)'), flags, True)
問候, imap_tools 作者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.