Учитывая сообщение RFC822 в Python 2.6, как я могу получить справа текст/часть простого контента? В принципе, алгоритм я хочу это:Как получить текстовое содержимое сообщения электронной почты с помощью python?
message = email.message_from_string(raw_message)
if has_mime_part(message, "text/plain"):
mime_part = get_mime_part(message, "text/plain")
text_content = decode_mime_part(mime_part)
elif has_mime_part(message, "text/html"):
mime_part = get_mime_part(message, "text/html")
html = decode_mime_part(mime_part)
text_content = render_html_to_plaintext(html)
else:
# fallback
text_content = str(message)
return text_content
Из этих вещей, я get_mime_part
и has_mime_part
вниз погладить, но я не совсем уверен, как получить расшифрованный текст из MIME части. Я могу получить текст в кодируются с помощью get_payload()
, но если я пытаюсь использовать параметр метода get_payload()
decode
(см the doc) Я получаю сообщение об ошибке, когда я вызываю его на текст/равнинной части:
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/email/message.py", line 189, in get_payload
raise TypeError('Expected list, got %s' % type(self._payload))
TypeError: Expected list, got <type 'str'>
Кроме того, я не знаю, как взять HTML и сделать его в тексте максимально близко.
Я нашел полезное решение что-то подобное в http://ginstrom.com/scribbles/2007/11/19/parsing-multilingual-email-with- python/ – beldaz