python email.parser: 从邮件中提取头部信息

1 投票
1 回答
6769 浏览
提问于 2025-04-17 15:14
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]包含了我的邮件内容。

我唯一能获取头部信息的方法是再次向IMAP服务器请求,特别是请求头部信息:

status, message = mail.fetch(msg_id, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')
parser = HeaderParser()
header = parser.parsestr(message[0][1])
print header

有没有人能告诉我该怎么做?

1 个回答

10

我猜你手上有完整的邮件内容,而不仅仅是邮件的正文。

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

撰写回答