Python中的电子邮件作为email.Message类对象
我该如何使用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()