python - 使用 extract-msg 包读取 .msg 文件时出错
问题描述
运行 extract-msg 包时收到错误消息:
“当前版本的 extract_msg 不支持提取不是嵌入 msg 文件的容器。”
我正在阅读一个仅包含 .msg 文件的文件夹,关于如何解决这个问题的任何想法?谢谢!
解决方案
我正在查看引发错误的地方(https://github.com/mattgwwalker/msg-extractor/blob/6fd92d74562425e79487fba56c5e1ae5caaf6681/extract_msg/attachment.py#L47),它似乎与附件数据有关。我觉得图书馆可能无法处理提取除其他附加电子邮件以外的附件(如果我错了,请随时纠正我)。
粗粒度解决方案
一种可能的解决方案是将您的消息提取代码包装在 try/catch 块中以忽略附件(如果可以的话)。
# Example
for message in messages:
try:
# Extract message using extract_msg
catch NotImplementedError:
print("Failed to extract message")
这样,它就会跳过那些无法提取附件的消息。
细粒度解决方案
对于在仍然解析邮件的其余部分的同时跳过附件,您可以打开并将第 502-503message.py
行extract_msg
更改为如下所示:
for attachmentDir in attachmentDirs:
try:
self._attachments.append(self.__attachmentClass(self, attachmentDir))
catch NotImplementedError:
print("Failed to extract attachment")
这样至少会解析消息和有效附件,但会跳过有问题的附件。
如果附件数据对您的目的不重要,我会研究是否有办法忽略附件的解析。或者,extract_msg
允许您指定一个自定义类来处理附件的处理,因此您也可以查看它。希望这可以帮助!
推荐阅读
- android - 仅允许少数设备根据自定义规则访问 firebase 中的数据
- polly - 重置 Polly 重试次数
- python - 如何在pytest中只运行一次参数化测试
- java - 对于给定的 Date 对象,捕获它与 GMT 时区相关的值
- android - 使用 CameraX 获取散景和 HDR 供应商效果的 isExtensionAvailable 始终为 false 值
- r - 循环R中的变量
- android - 只能将一项添加到 Firebase
- reactjs - 将 Flow 与 HOC 和 Redux 一起使用
- php - cakephp 验证异或规则
- javascript - 如何在画布内拖动图像而不在图像上重绘形状?