Python 3.6解析.msg邮件文件失败,无法获取头部信息求助
问题分析与解决方案
嘿,我来帮你捋捋这个问题——你用Python标准库的email.parser.Parser来读.msg文件,肯定拿不到内容的,原因很简单:这个工具根本不支持微软Outlook的.msg格式!
核心原因
.msg是微软Outlook专属的二进制OLE格式邮件文件,和标准的MIME邮件(比如常见的.eml文件)结构完全不一样。而email.parser.Parser只能解析遵循RFC规范的纯文本/MIME邮件,用它来读.msg就像用记事本打开Excel文件,自然读不出有效信息,返回None也就不奇怪了。
解决方法:用专门的.msg解析库
Python生态里有几个专门处理.msg文件的第三方库,给你推荐两个最实用的:
1. msg-extractor(简单易上手,功能全)
先安装库:
pip install msg-extractor
然后用下面的代码提取信息:
from extract_msg import Message # 加载目标.msg文件 msg = Message(r'E:/Ratan/msg_files/Test1.msg') # 提取核心邮件字段 print('To:', msg.to) print('From:', msg.sender) print('Subject:', msg.subject) # 还能轻松提取正文、附件等内容 # print('邮件正文:', msg.body) # print('附件列表:', msg.attachments)
2. outlook-message-parser(轻量专注核心字段)
如果只需要提取收件人、发件人、主题这些核心信息,这个轻量库更合适:
pip install outlook-message-parser
示例代码:
from outlook_message_parser import parse_msg # 解析.msg文件,返回字典格式的信息 msg_data = parse_msg(r'E:/Ratan/msg_files/Test1.msg') print('To:', msg_data['to']) print('From:', msg_data['from']) print('Subject:', msg_data['subject'])
用这两个库中的任意一个,都能正常提取到.msg文件里的实际内容啦。
内容的提问来源于stack exchange,提问作者Ratan
相关产品推荐
相关产品推荐

