Ошибка чтения MSG-файлов с помощью пакета extract-msg - PullRequest
1 голос
/ 10 марта 2020

Я получаю сообщение об ошибке при запуске пакета extract-msg:

"Текущая версия extract_msg не поддерживает извлечение контейнеров, которые не являются встроенными файлами msg."

Я читаю в папка, которая содержит только MSG-файлы, есть идеи, как решить эту проблему? Спасибо!

1 Ответ

0 голосов
/ 10 марта 2020

Я искал место, где возникает ошибка (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")

Таким образом, он просто пропустит те сообщения, которые не удалось извлечь вложения.

Мелкозернистое решение

Чтобы просто пропустить вложения при анализе остальной части сообщения, вы можете открыть message.py в extract_msg и изменить строки 502-503 на читать следующим образом:

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

Таким образом, по крайней мере сообщение и допустимые вложения будут проанализированы, но проблемные c вложения будут пропущены.

Я бы посмотрел, есть ли Есть способы игнорировать анализ вложений, если данные вложения не имеют решающего значения для ваших целей. В качестве альтернативы, extract_msg позволяет вам указать пользовательский класс для обработки вложений, так что вы также можете посмотреть на это. Надеюсь, это поможет!

...