在python中仅提取电子邮件标题

在python中仅提取电子邮件标题,python,email,header,Python,Email,Header,我在用python提取所有电子邮件标题时遇到了一些问题。我知道如何得到我正在寻找的,但我想保存所有的标题,我不知道如何做到这一点 我已将其加载到电子邮件对象中 import email f = open(kwargs['opt_emailfile']) msg = email.message_from_file(f) f.close() 这样我就可以 msg['To'] msg['From'] 但是我想要所有的标题 解决方案 这是我所做的感谢答案 f = open(kwarg

我在用python提取所有电子邮件标题时遇到了一些问题。我知道如何得到我正在寻找的,但我想保存所有的标题,我不知道如何做到这一点

我已将其加载到电子邮件对象中

import email
f = open(kwargs['opt_emailfile'])
msg = email.message_from_file(f)
f.close()
这样我就可以

msg['To']
msg['From']
但是我想要所有的标题

解决方案

这是我所做的感谢答案

        f = open(kwargs['opt_emailfile'])
        msg = email.message_from_file(f)
        f.close()

        parser = email.parser.HeaderParser()
        headers = parser.parsestr(msg.as_string())

        for h in headers.items():
            print h
或许可以使用:


我刚注意到你编辑了你的问题。实际上,您可以在不使用HeaderParser的情况下从所拥有的信息中获得相同的信息。e、 g.
headers.items()
包含头和相应值的2元组列表。

到目前为止您尝试了什么?你有一些部分工作,或非工作的代码吗?好的,编辑我的文章到目前为止,我不确定这是否会帮助任何人,但这是我的两位。我所要做的(对于一个特定的标题)就是
msg['header\u Name']
,如果标题存在,你就会得到内容,否则就什么也得不到。使用名为
email
的变量可能不是一个好主意,因为它是一个模块的名称,即使你没有直接导入
email
。这(以及OP的“解决方案”)在问题本身中)实际上按顺序返回所有标题,即使
keys()
排序有点像字典一样的行为。将其改编成我自己对相关问题的回答:如果电子邮件不完整(仅标题),这也会起作用
from email.parser import HeaderParser
parser = HeaderParser()
h = parser.parsestr(email)

print h.keys()