由于在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中的其他线程看到的
答案 0 :(得分:1)
引用官方Python文档(强调我的):
从二进制文件类对象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()