Skip to main content
 首页 » 编程设计

python 电子邮件.parser : extract header from email

2025年05月04日29cyq1162

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对象。