我正在使用 python 3.6.1,我想读取电子邮件文件(.eml)进行处理。我正在使用电子邮件数据 0.3.4包,但是每当我尝试像文档中那样导入 Text 类时,我都会收到模块错误:
import email
from email.text import Text
>>> ModuleNotFoundError: No module named 'cStringIO'
当我尝试纠正使用这次更新,我收到下一个与以下相关的错误mimetools
>>> ModuleNotFoundError: No module named 'mimetools'
是否可以使用 emaildata 0.3.4 和 python 3.6 来解析 .eml 文件?或者还有其他包可以用来解析 .eml 文件吗?谢谢
使用电子邮件包,我们可以读取.eml 文件。然后,使用BytesParser
解析文件的库。最后,使用一个plain
首选项(对于纯文本)get_body()
方法,以及get_content()
获取电子邮件原始文本的方法。
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) # print the email content
>>> "Hi,
>>> This is an email
>>> Regards,
>>> Mister. E"
当然,这是一个简化的示例 - 没有提及 HTML 或附件。但它基本上完成了问题提出的问题和我想做的事情。
以下是迭代多封电子邮件并将每封电子邮件保存为纯文本文件的方法:
file_list = glob.glob('*.eml') # returns list of files
for file in file_list:
with open(file, 'rb') as fp:
msg = BytesParser(policy=policy.default).parse(fp)
fnm = os.path.splitext(file)[0] + '.txt'
txt = msg.get_body(preferencelist=('plain')).get_content()
with open(fnm, 'w') as f:
print('Filename:', txt, file = f)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)