【问题标题】:How can I get an email message's text content using Python?如何使用 Python 获取电子邮件的文本内容?
【发布时间】:2023-04-06 19:18:01
【问题描述】:

鉴于 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_parthas_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 并将其呈现为尽可能接近的文本。

【问题讨论】:

标签:
python
email
mime
rfc822