簡體   English   中英

通過 python IMAP 使用消息 ID 檢索/搜索電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM