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'
密件抄送字段都没有包含地址,所以返回空列表。