2011-06-02 226 views
2

执行响应下面显示的代码后,我收到以下响应。我怎样才能解析通过这个答复得到发件人(约翰史密斯)和主题(测试)?使用imaplib获取电子邮件主题和发件人?

[('13010 (BODY[HEADER.FIELDS (SUBJECT FROM)] {57}', 'From: John Smith <[email protected]>\r\nSubject: test\r\n\r\n'), ')'] 

-

conn.fetch(message, '(BODY[HEADER.FIELDS (SUBJECT FROM)])') 

回答

7

也许这个问题/答案here会有所帮助。尝试这样的:

from email.parser import HeaderParser 
data = conn.fetch(message, '(BODY[HEADER.FIELDS (SUBJECT FROM)])') 
header_data = data[1][0][1] 
parser = HeaderParser() 
msg = parser.parsestr(header_data) 

然后msg应该是一本字典。

2

您可以尝试此操作来获取所有邮件的标题信息。

import imaplib 
import email 

obj = imaplib.IMAP4_SSL('imap.gmail.com', 993) 
obj.login('username', 'password') 
obj.select('folder_name') 
resp, data = obj.uid('FETCH', ','.join(map(str,uidl_list)) , '(BODY.PEEK[HEADER.FIELDS (From Subject)] RFC822.SIZE)') 

注:这里的uidl_list'是邮件ü希望其主题的UID名单。

相关问题