import sys, imaplib
from email.parser import HeaderParser
mail = imaplib.IMAP4_SSL(SERVER, PORT)
status, data = mail.search(None, 'ALL')
for msg_id in data[0].split():
status, message = mail.fetch(msg_id, '(RFC822)')
print message[0][1]
mail.close()
mail.logout()
我正在尝试通过 imap 从 gmail 中获取电子邮件。一切正常,除了我无法从邮件中提取标题(主题、发件人、日期)。在上面的代码中,message[0][1] 包含我的电子邮件。
我能够获得 header 的唯一方法是再次询问 imap 服务器,特别是 header :
status, message = mail.fetch(msg_id, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')
parser = HeaderParser()
header = parser.parsestr(message[0][1])
print header
有人能告诉我怎么做吗?
请您参考如下方法:
我假设您收到了完整的电子邮件,而不仅仅是邮件正文。
raw_message = """From: Santa Claus <santa@aintreal.no>
To: Some Dude <some@du.de>
Subject: I have lost your presents.
Dude, i am so sorry.
"""
import email
msg = email.message_from_string(raw_message)
print(msg['Subject']) # "I have lost your presents."
msg 是 email.message.Message对象。
