Python 3.x - 如何检查电子邮件文件中是否存在“From:”标题?

时间:2016-05-25 11:43:41

标签: python-3.x

由于在Python 3及更高版本中删除了has_keys()函数,我不知道用什么代码来检查电子邮件文件中是否存在“From:”标题。

这是我目前的片段:

with open(emlFile, 'rb') as fp:
        headers = BytesParser(policy=policy.default).parse(fp)
        if 'From:' in headers:
            str = headers['from']

我使用in而不是has_keys('from'),因为这是我从StackOverflow中的其他线程看到的

1 个答案:

答案 0 :(得分:1)

引用官方Python文档(强调我的):

BytesParser.parse

  

从二进制文件类对象fp中读取所有数据,解析   结果字节,返回消息对象。 fp必须支持两者   文件类对象上的readline()和read()方法。

由于解析结果为Message个实例,因此请检查that class docs

__contains__(name)

  

如果消息对象有字段,则返回true   命名。匹配不区分大小写,名称不应该   包括尾部冒号。用于in运算符,例如:

if 'message-id' in myMessage:
   print('Message-ID:', myMessage['message-id'])

您的检查包含尾随冒号,根据文档无效。有效检查是:

if 'from' in headers:
    do_something()