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

Mik*_*ike 12 python email header

我在尝试提取python中的所有电子邮件标题时遇到了一些问题.我知道如何获得我正在寻找的那些,但我想保存所有的标题,我不知道该怎么做.

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

import email
f = open(kwargs['opt_emailfile'])
msg = email.message_from_file(f)
f.close()
Run Code Online (Sandbox Code Playgroud)

所以我可以得到

msg['To']
msg['From']
Run Code Online (Sandbox Code Playgroud)

但我想要所有标题

这就是我在答案中所做的

        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
Run Code Online (Sandbox Code Playgroud)

jan*_*gan 17

也许使用HeaderParser:

from email.parser import HeaderParser
parser = HeaderParser()
h = parser.parsestr(email)

print h.keys()
Run Code Online (Sandbox Code Playgroud)

我刚注意到你编辑了你的问题.实际上,您可以从不使用HeaderParser的方式获得相同的信息.例如,headers.items() 将返回带有标题和相应值的2元组列表.

  • 使用名为“email”的变量可能不是一个好主意,因为它是模块的名称,即使您没有直接导入“email”。 (2认同)