【问题标题】:retrieve/search for emails using message ID through python IMAP通过 python IMAP 使用消息 ID 检索/搜索电子邮件
【发布时间】:2019-03-01 02:08:30
【问题描述】:

有没有办法通过 python IMAP 以编程方式使用消息 ID 检索/搜索电子邮件。我想使用消息 ID 提取邮件的附件。 任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 有没有办法...? 是的。但请展示您尝试过的内容......
  • SEARCH HEADER 是你的朋友,但是它在很多服务器上实施不当或损坏。

标签: python email imap


【解决方案1】:

感谢大家前来帮助我。 我终于搞定了。 我正在寻找一种方法来获取具有给定 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)

【讨论】:

    【解决方案2】:

    你可以使用 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://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 作者。

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多