Comment puis-je obtenir un message électronique du texte contenu à l'aide de Python?

Donné un message RFC822 en Python 2.6, comment puis-je obtenir le droit text/plain contenu de la partie? Fondamentalement, l'algorithme que je veux c'est ceci:

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 ces choses, j'ai get_mime_part et has_mime_part bas pat, mais je ne suis pas tout à fait sûr de savoir comment obtenir le texte décodé à partir de la partie MIME. Je peux obtenir le codé texte à l'aide de get_payload(), mais si j'essaie d'utiliser le decode paramètre de la get_payload() méthode (voir le doc) j'ai une erreur quand je l'appelle sur le text/plain partie:

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'>

En plus, je ne sais pas comment prendre le HTML et le rendu de texte d'aussi près que possible.

InformationsquelleAutor Chris R | 2009-09-22