题
我正在使用Imaplib在Python中与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甚至在不同的元素中。因此,问题是 - 是否有一些库可以自动对其进行整理并抽象特定邮件服务器的详细信息?
解决方案
道格·海尔曼(Doug Hellman) imaplib的本周条目的Python模块 是关于该主题的相当广泛的教程,但在这里可以繁殖。
您可能想使用更高级别的库 imapclient 隐藏IMAP协议的一些细节。
其他提示
查看IMBOX,您可能会找到所需的东西 https://pypi.org/project/imbox/
您可以使用imap_tools包:https://pypi.org/project/imap-tools/
for message in mailbox.fetch():
message.uid # str or None, '123'
message.subject # str, 'some subject'
message.from_ # str, 'sender@ya.ru'
message.to # tuple, ('iam@goo.ru', 'friend@ya.ru', )
message.cc # tuple, ('cc@mail.ru', )
message.bcc # tuple, ('bcc@mail.ru', )
message.date # datetime.datetime, 1900-1-1 for unparsed, may be naive or with tzinfo
message.text # str, 'hi'
message.html # str, '<b>hi</b>'
message.flags # tuple, ('SEEN', 'FLAGGED', 'ENCRYPTED')
message.headers # dict, {'Received': ('from 1.m.net', 'from 2.m.net'), 'AntiVirus-Status': ('Clean',)}
message.attachments # [(str, bytes)], 'cat.jpg', b'\xff\xd8\xff\xe0\'
message.obj # original email.message.Message object
message.from_values # dict or None, {'email': 'sender@ya.ru', 'name': 'Ivan', 'full': 'Ivan <sender@ya.ru>'}
message.to_values # tuple, ({'email': '', 'name': '', 'full': ''},)
message.cc_values # tuple, ({'email': '', 'name': '', 'full': ''},)
message.bcc_values # tuple, ({'email': '', 'name': '', 'full': ''},)
message.date_str # original date str, 'Tue, 03 Jan 2017 22:26:59 +0500'
不隶属于 StackOverflow