16.4.9 从原始消息中获取正文

电子邮件可以是纯文本、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版本的字符串➍。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值