在python中解析IMAP响应

在python中解析IMAP响应,python,imap,imaplib,Python,Imap,Imaplib,我使用imaplib在python中处理imap,但是它似乎没有办法解析imap响应的细节。例如,查询如下: msgdata = connection.fetch(num, "(BODY.PEEK[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] UID)") 其中num是一个邮件服务器可能产生的邮件编号(例如): 另一方面: ('OK', [('1234 (UID 3456 BODY[HEADER.FIELDS (FROM TO

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

   msgdata = connection.fetch(num, "(BODY.PEEK[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] UID)")
其中
num
是一个邮件服务器可能产生的邮件编号(例如):

另一方面:

  ('OK', [('1234 (UID 3456 BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ')'])
正如您所看到的,消息细节是不同的,UID甚至在不同的元素中。所以问题是——是否有某种库可以自动对其进行分类并抽象出特定邮件服务器所做工作的细节

道格·赫尔曼(Doug Hellman)的书是关于这一主题的相当广泛的教程,但要在这里重现还远远不够


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

查看Imbox,您可能会发现您要查找的内容。

高级IMAP库可能很有用:


不幸的是,Doug的教程略过了解析更复杂的fetch()响应的主题。谢谢你给我IMAPClient的链接,我会查出来的。
  ('OK', [('1234 (UID 3456 BODY[HEADER.FIELDS (FROM TO CC DATE SUBJECT MESSAGE-ID)] {123}', 'From: ...etc headers'), ')'])
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()]