如何使用imaplib获取电子邮件主题和发件人?

2 投票
2 回答
21673 浏览
提问于 2025-04-16 18:48

我在执行下面代码后,得到了以下的回复。请问我该如何解析这个回复,以获取发件人(约翰·史密斯)和主题(测试)呢?

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

-

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

2 个回答

4

你可以试试这个方法来获取所有邮件的头部信息。

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 列表。

8

也许这个问题/答案 这里 会对你有帮助。你可以试试下面这样的代码:

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 应该会变成一个字典。

撰写回答