【问题标题】:Parsing IMAP responses in python在 python 中解析 IMAP 响应
【发布时间】:2011-05-26 20:58:22
【问题描述】:

我在 python 中使用 imaplib 来处理 imap,但是它似乎没有办法解析 IMAP 响应的详细信息。例如,查询如下:

   msgdata = connection.fetch(num, "(BODY.PEEK[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] UID)")

其中num 是邮件编号,因为一台邮件服务器可能会产生(例如):

  ('OK', [('1234 (BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ' UID 3456)'])

另外一个:

  ('OK', [('1234 (UID 3456 BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ')'])

如您所见,消息详细信息不同,并且 UID 甚至在不同的元素中。所以问题是 - 是否有一些库可以自动将其分类并抽象出特定邮件服务器的详细信息?

【问题讨论】:

    标签: python imap imaplib


    【解决方案1】:

    Doug Hellman 的 Python Module of the Week entry for imaplib 是关于该主题的相当广泛的教程,但在这里复制的时间太长了。

    您可能希望使用更高级别的库,例如 IMAPClient 来隐藏 IMAP 协议的一些细节。

    【讨论】:

    • 不幸的是,Doug 的教程在解析更复杂的 fetch() 响应的主题上略过。感谢您提供指向 IMAPClient 的链接,我会检查一下。
    【解决方案2】:

    看看 Imbox,你可能会找到你要找的东西https://pypi.org/project/imbox/

    【讨论】:

      【解决方案3】:

      高级 IMAP 库可能有用:https://github.com/ikvk/imap_tools

      from imap_tools import MailBox
      # get list of email subjects from INBOX folder
      with MailBox('imap.mail.com').login('test@mail.com', 'password', 'INBOX') as mailbox:
          data = [(msg.uid, msg.subject) for msg in mailbox.fetch()]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        • 2022-06-11
        • 1970-01-01
        相关资源
        最近更新 更多