电子邮件可以是纯文本、HTML 或两者的混合。纯文本电子邮件只包含文本,而
HTML 电子邮件可以有颜色、字体、图像和其他功能,使得电子邮件看起来像一个小网页。如果电子邮件仅仅是纯文本,它的PyzMessage 对象会将html_part
属性设为None。同样,如果电子邮件只是 HTML,它的 PyzMessage 对象会将text_part 属性设为 None。
否则,text_part 或html_part 将有一个 get_payload()方法,将电子邮件的正文返回为 bytes 数据类型(bytes
数据类型超出了本书的范围)。但是,这仍然不是我们可以使用的字符串。啊!最后一步对 get_payload()返回的 bytes 值调用
decode()方法。decode()方法接受一个参数:这条消息的字符编码,保存在 text_part.charset或html_part.charset 属性中。最后,这返回了邮件正文的字符串。
输入以下代码,继续交互式环境的例子:
➊ >>> message.text_part != None
True
>>> message.text_part.get_payload().decode(message.text_part.charset)
➋ 'So long, and thanks for all the fish!\r\n\r\n-Al\r\n'
➌ >>> message.html_part != None
True
➍ >>> message.html_part.get_payload().decode(message.html_part.charset)
'<div dir="ltr"><div>So long, and thanks for all the fish!<br><br></div>-Al
<br></div>\r\n'
我们正在处理的电子邮件包含纯文本和HTML 内容,因此保存在 message 中的 PyzMessage 对象的 text_part 和 html_part 属性不等于
None➊➌。对消息的 text_part调用 get_payload(),然后在 bytes 值上调用
decode(),返回电子邮件的文本版本的字符串➋。对消息的 html_part 调用 get_payload()和
decode(),返回电子邮件的HTML版本的字符串➍。