解析电子邮件中的 HTML 内容
Parsing the HTML content in email
我正在尝试编写 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 link 完整代码:Email-parser
如何摆脱那个 HTML 代码并只获得纯文本?
邮件正文是 MIME 编码的 - 这就是为什么它包含纯文本和 HTML 格式的文本。为了只获得正文的明文,您首先需要对消息进行 MIME 解码。您可以使用 python 的 email package to do the MIME-decoding. Also, see this question 了解更多信息。
我正在尝试编写 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 link 完整代码:Email-parser
如何摆脱那个 HTML 代码并只获得纯文本?
邮件正文是 MIME 编码的 - 这就是为什么它包含纯文本和 HTML 格式的文本。为了只获得正文的明文,您首先需要对消息进行 MIME 解码。您可以使用 python 的 email package to do the MIME-decoding. Also, see this question 了解更多信息。