在Python 2.6中給出了一個RFC822消息,我如何才能獲得正確的文本/純文本內容部分?基本上,該算法我想是這樣的:如何使用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 2013-07-11 03:21:43