当前位置:嗨网首页>书籍在线阅读

22-从原始消息中获取电子邮件地址

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

18.5.5 从原始消息中获取电子邮件地址

对于只想读邮件的人来说, fetch() 方法返回的原始消息仍然不太有用。 pyzmail 模块解析这些原始消息,将它们作为 PyzMessage 对象返回,使邮件的主题、正文、“收件人”字段、“发件人”字段和其他部分能用Python代码轻松访问。

用下面的代码继续演示交互式环境的例子(使用你自己的邮件账户的UID,而不是这里显示的):

>>> import pyzmail
>>> message = pyzmail.PyzMessage.factory(rawMessages[40041][b'BODY[]'])

首先,导入 pyzmail 。然后,为了创建一个电子邮件的 PyzMessage 对象,调用 pyzmail. PyzMessage.factory() 函数,并传入原始邮件的 'BODY[]' 部分。结果保存在 message 中。现在, message 中包含一个 PyzMessage 对象,它有几个方法,可以很容易地获得电子邮件主题行,以及所有发件人和收件人的地址。 get_subject() 方法将主题返回为一个简单字符串。 get_addresses() 方法针对传入的字段,返回一个地址列表。例如,该方法调用可能像这样:

>>> message.get_subject()
'Hello!'
>>> message.get_addresses('from')
[('Edward Snowden', '[email protected]')]
>>> message.get_addresses('to')
[('Jane Doe', '[email protected]')]
>>> message.get_addresses('cc')
[]
>>> message.get_addresses('bcc')
[]

请注意, get_addresses() 的参数是 'from''to''cc''bcc'get_addresses() 的返回值是一个元组列表。每个元组包含两个字符串:第一个是与该电子邮件地址关联的名称,第二个是电子邮件地址本身。如果请求的字段中没有地址, get_addresses() 返回一个空列表。在这里, 'cc' 抄送和 'bcc' 密件抄送字段都没有包含地址,所以返回空列表。