retrieve/search 用于通过 python IMAP 使用消息 ID 的电子邮件

retrieve/search for emails using message ID through python IMAP

有没有办法 retrieve/search 通过 python IMAP 获取使用消息 ID 的电子邮件 programmatically.I 想提取使用消息 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

如果您想通过消息 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://www.rfc-editor.org/rfc/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
    mailbox.delete(mailbox.uids())

    # FLAG unseen messages in current folder as Answered and Flagged
    flags = (imap_tools.StandardMessageFlags.ANSWERED, imap_tools.StandardMessageFlags.FLAGGED)
    mailbox.flag(mailbox.uids(AND(seen=False)), flags, True)

问候,imap_tools 作者。