Python 2.6でRFC822メッセージが表示された場合、適切なテキスト/プレーンコンテンツ部分を取得するにはどうすればよいですか?基本的に、私が欲しいアルゴリズムはこれです:
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()
を使用しようとすると(ドキュメントを参照)、テキスト/プレーン部分で呼び出すとエラーが発生します。decode
get_payload()
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を取得してテキストにできるだけ近づける方法がわかりません。