首页 > 解决方案 > 使用 extract-msg 包读取 .msg 文件时出错

问题描述

运行 extract-msg 包时收到错误消息:

“当前版本的 extract_msg 不支持提取不是嵌入 msg 文件的容器。”

我正在阅读一个仅包含 .msg 文件的文件夹,关于如何解决这个问题的任何想法?谢谢!

标签: pythonemailmsg

解决方案


我正在查看引发错误的地方(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.pyextract_msg更改为如下所示:

for attachmentDir in attachmentDirs:
    try:
        self._attachments.append(self.__attachmentClass(self, attachmentDir))
    catch NotImplementedError:
        print("Failed to extract attachment")

这样至少会解析消息和有效附件,但会跳过有问题的附件。

如果附件数据对您的目的不重要,我会研究是否有办法忽略附件的解析。或者,extract_msg允许您指定一个自定义类来处理附件的处理,因此您也可以查看它。希望这可以帮助!


推荐阅读