Python中的电子邮件作为email.Message类对象

1 投票
2 回答
2117 浏览
提问于 2025-04-15 15:39

我该如何使用poplib,并从Python的email模块中的email.Message类下载邮件作为消息实例呢?

我正在写一个程序,目的是分析所有邮件中的特定信息,并将消息的部分内容存储到数据库里。我可以把整个邮件下载为文本,但在文本中查找附件就比较困难了。

我的想法是解析邮件以获取信息。

2 个回答

2

这个内容没有处理像Adrien Plisson的回答那样的字符集问题。

import poplib
import email

pop = poplib.POP3( "server..." )
[establish connection, authenticate, ...]
raw = pop.retr( 1 )
pop.close()

message = email.message_from_string('\n'.join(raw[1]))
3

使用 FeedParser 类,这个类在 email.feedparser 模块里,可以从用 poplib 从服务器读取的邮件中构建一个 email.Message 对象。

具体来说:

import poplib
import email

pop = poplib.POP3( "server..." )
[establish connection, authenticate, ...]
raw = pop.retr( 1 )
pop.close()

parser = email.parser.FeedParser()
for line in raw[1]:
    parser.feed( str( line+b'\n', 'us-ascii' ) )
message = parser.close()

撰写回答