Я искал место, где возникает ошибка (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
позволяет вам указать пользовательский класс для обработки вложений, так что вы также можете посмотреть на это. Надеюсь, это поможет!