Разбор писем с плохими типами пантомимы в python - PullRequest
1 голос
/ 14 декабря 2011

Я пытаюсь использовать Python imaplib и email.feedparser, чтобы извлечь вложение из почтового ящика gmail. Электронное письмо было сгенерировано внешней стороной и отправлено нам, поэтому я не могу его контролировать.

Проблема в том, что сообщение, которое я пытаюсь проанализировать, имеет msg.get_content_maintype() return 'text' вместо 'multitype'. В результате uuencoded прикрепленный файл соединяется с остальной частью сообщения, и я не вижу простого способа извлечь его из email.message.Message.

Есть идеи, как мне извлечь вложение из такого письма?

Если это какая-либо помощь, в электронном письме содержится сообщение «Произведено Microsoft MimeOLE V6.00.3790.4862». У Thunderbird также были проблемы с отображением этого письма, и он не смог выяснить, что у него есть вложение. В противном случае сообщение выглядит нормально в Outlook и веб-клиенте Gmail.

1 Ответ

0 голосов
/ 14 декабря 2011

Как документация email.parser.FeedParser говорит, что вы можете использовать параметр _factory для предоставления своего собственного Message класса. Вы можете поместить свой собственный класс, производный от email.message.Message, который заменит тип содержимого сообщения на правильный, если это сообщение составлено в «Произведено Microsoft MimeOLE ... blablabla».

Я думаю, что можно ожидать, что сообщения в этом конкретном случае всегда будут составными.

...