解析电子邮件中的HTML内容

问题描述 投票:0回答:1

我正在尝试编写一个 python 脚本来阅读我的电子邮件。 我能够正确地理解大部分内容,例如

To
From
Subject
。 但在
body
中,我也获得了文本及其 HTML 代码,如下所示。

下面是从电子邮件中提取内容的代码部分

email_message = email.message_from_string(raw_email)
print 'To:', email_message['To']
print 'Sent from:', email_message['From']
print 'Date:', email_message['Date']
print 'Subject:', email_message['Subject']
print '*'*30, 'MESSAGE', '*'*30
maintype = email_message.get_content_maintype()
#print maintype

if maintype == 'multipart':
    for part in email_message.get_payload():
            if part.get_content_maintype() == 'text':
                print part.get_payload()
elif maintype == 'text':
    print email_message.get_payload()
print '*'*69

完整代码的 Git 链接:Email-parser

如何摆脱 HTML 代码并仅获取纯文本?

python email parsing imap imaplib
1个回答
4
投票

消息正文采用 MIME 编码 - 这就是它包含纯文本和 HTML 格式文本的原因。为了仅获取正文的明文,您首先需要对消息进行 MIME 解码。您可以使用 python 的 email package 来进行 MIME 解码。另请参阅此问题了解更多信息。

import email
import email.policy

with open("example.email", "rb") as f:
    msg = email.message_from_bytes(f.read(), policy=email.policy.default)

for part in msg.iter_parts():
    print(part.get_content()) # print part, decoding quotable
© www.soinside.com 2019 - 2024. All rights reserved.