对于只想读邮件的人来说,fetch()方法返回的原始消息仍然不太有用。pyzmail
模块解析这些原始消息,将它们作为 PyzMessage 对象返回,使邮件的主题、正文、“收件人”字段、“发件人”字段和其他部分能用 Python 代码轻松访问。
用下面的代码继续交互式环境的例子(使用你自己的邮件账户的UID,而不是
这里显示的):
>>> import pyzmail
>>> message = pyzmail.PyzMessage.factory(rawMessages[40041]['BODY[]'])
首先,导入 pyzmail。然后,为了创建一个电子邮件的PyzMessage 对象,调用
pyzmail.PeekMessage.factory()函数,并传入原始邮件的'BODY[]'部分。结果保存在 message 中。现在,message 中包含一个 PyzMessage
对象,它有几个方法,可以很容易地获得的电子邮件主题行,以及所有发件人和收件人的地址。get_subject()方法将主题返回为一个简单字符串。get_addresses()方法针对传入的字段,返回一个
地址列表。例如,该方法调用可能像这样:
>>> message.get_subject()
'Hello!'
>>> message.get_addresses('from')
[('Edward Snowden', 'esnowden@nsa.gov')]
>>> message.get_addresses('to')
[(Jane Doe', 'my_email_address@gmail.com')]
>>> message.get_addresses('cc')
[]
>>> message.get_addresses('bcc')
[]
请注意,get_addresses()的参数是'from'、'to'、'cc'或
'bcc'。get_addresses()的返回值是一个元组列表。每个元组包含两个字符串:第一个是与该电子邮件地址关联的名称,第二个是电子邮件地址本身。如果请求的字段中没有地址,get_address
es()返回一个空列表。在这里,'cc'抄送和'bcc'密件抄送字段都没有包含地址,所以返回空列表。