Dado un mensaje RFC822 en Python 2.6, ¿cómo puedo obtener el derecho parte de texto/contenido simple? Básicamente, el algoritmo que yo quiero es éste:¿Cómo puedo obtener el contenido de texto de un mensaje de correo electrónico usando 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
de estas cosas, tengo get_mime_part
y has_mime_part
al dedillo, pero no estoy muy seguro de cómo obtener el texto decodificado de la parte MIME. Puedo obtener el texto codificado usando get_payload()
, pero si trato de utilizar el parámetro decode
del método get_payload()
(ver the doc) me da un error cuando llamo en el texto/parte llana:
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'>
Además, no sé cómo tomar HTML y presentarlo al texto lo más fielmente posible.
he encontrado una solución útil para algo similar en http://ginstrom.com/scribbles/2007/11/19/parsing-multilingual-email-with- python/ – beldaz