【发布时间】:2020-07-21 16:34:21
【问题描述】:
我有一个带有一些附件的 eml 文件。我想读取 eml 文件中的文本内容,并且我想提取元数据信息,例如(发件人、发件人、抄送、密件抄送、主题)。我也想下载附件。借助以下代码,我只能提取电子邮件正文中的信息/文本内容。
import email
from email import policy
from email.parser import BytesParser
import glob
file_list = glob.glob('*.eml') # returns list of files
with open(file_list[2], 'rb') as fp: # select a specific email file from the list
msg = BytesParser(policy=policy.default).parse(fp)
text = msg.get_body(preferencelist=('plain')).get_content()
print(text)
有模块名称 emaildata 可用于 Python 2 完成这项工作。
提取元数据信息
import email
from emaildata.metadata import MetaData
message = email.message_from_file(open('message.eml'))
extractor = MetaData(message)
data = extractor.to_dict()
print data.keys()
提取附件信息
import email
from emaildata.attachment import Attachment
message = email.message_from_file(open('message.eml'))
for content, filename, mimetype, message in Attachment.extract(message):
print filename
with open(filename, 'w') as stream:
stream.write(content)
# If message is not None then it is an instance of email.message.Message
if message:
print "The file {0} is a message with attachments.".format(filename)
但是这个库现在已经被弃用了,现在可以使用了。有没有其他库可以提取元数据和附件相关信息?
【问题讨论】:
标签: python-3.x metadata email-attachments eml