Python中的邮件Internet头分析器?

Python中的邮件Internet头分析器?,python,parsing,smtp,rfc822,Python,Parsing,Smtp,Rfc822,一直在浏览以前的帖子,但到目前为止只找到了识别发件人、收件人、主题的解决方案。我希望开始使用类似于和这样的工具的代码来分析internet头 我希望能够提取,例如,从、回复、提交MX、X源IP、X-mailer。我应该从头开始创建解析器,还是有什么可以使用的?也许是一个样本或者你可以分享的东西 最好的, Fredrik的电子邮件模块可以很好地处理电子邮件。 例如: import email msg = email.message_from_file("some_saved_email.eml"

一直在浏览以前的帖子,但到目前为止只找到了识别发件人、收件人、主题的解决方案。我希望开始使用类似于和这样的工具的代码来分析internet头

我希望能够提取,例如,从、回复、提交MX、X源IP、X-mailer。我应该从头开始创建解析器,还是有什么可以使用的?也许是一个样本或者你可以分享的东西

最好的,
Fredrik的电子邮件模块可以很好地处理电子邮件。 例如:

import email

msg = email.message_from_file("some_saved_email.eml")
# To get to headers, you treat the Message() as a dict:
print msg.keys() # To get all headers
print msg["X-Mailer"] # To get to header's value

# Let us list the whole header:
for header, value in msg.items():
    print header+": "+value

电子邮件模块很好地处理电子邮件。 例如:

import email

msg = email.message_from_file("some_saved_email.eml")
# To get to headers, you treat the Message() as a dict:
print msg.keys() # To get all headers
print msg["X-Mailer"] # To get to header's value

# Let us list the whole header:
for header, value in msg.items():
    print header+": "+value

伟大的谢谢!有没有一种方法也可以获得原始(第一个)MX?在模块上阅读参考可用值的最佳资源是什么(就像您使用“X-mailer”一样)?您是指“X-Originating-IP”吗?要了解如何使用该模块,最好的来源是Python的文档。至于值,它们不是固定的。很少有必需的头,其他的可以省略。或者用其他的头替换。每个邮件程序添加一些特定的头,反病毒可以加入。更不用说SMTP和POP服务器。你真的必须看看哪个头在检查过的邮件中可以找到ER,然后取出最可能需要的邮件。谷歌搜索电子邮件标题,并列出你自己想要的邮件(注意同义词)。谢谢Dalen!我确实有一些示例标题,现在在您的指导下将它们读入变量,但是似乎无法使用您的语法?测试它,它可以工作-headers=Parser().parse(open(“mailheader.txt”,“r”))。但是,我不会接受打印消息[“X-Mailer”],例如,而是打印(标题['From:'))将至少不返回任何内容。我想我有一些东西要读,但如果您有一些指示,我将不胜感激!如果您使用的是Python 3.x,那么电子邮件模块中引入了一些更改,因此我的示例中的一些内容可能不起作用。首先,如果是3.x,请尝试打印(msg[“x-Mailer”])-带括号。要了解电子邮件传递给您的步骤,您必须提取所有“已接收”标题。对于完整的MX记录,您必须从DNS服务器查询它们。即,获取“已接收”中列出的每个IP或域的可能服务器的完整列表标题。当标题不存在时,则不返回任何标题。如果没有“发件人”,那么,可以用其他标题代替它。例如,“回复到”或“返回路径”或“X-Rcpt-Trace”或“信封发件人”。尽管这是我听说的第一封没有标准“发件人”的电子邮件标题。我希望服务器甚至不想通过这样的电子邮件。在文本编辑器中打开您的电子邮件,您将能够比较其中的内容和您得到的内容。我重复:msg.keys()将返回您检查过的电子邮件的所有现有标题。太好了!Thx!有没有方法获取原始邮件(第一个)还有MX?在模块上读取可用值参考的最佳资源是什么(就像您使用“X-mailer”一样)?您是指“X-Originating-IP”吗?要了解如何使用该模块,最好的来源是Python的文档。至于值,它们不是固定的。很少有必需的头,其他的可以省略。或者用其他的头替换。每个邮件程序添加一些特定的头,反病毒可以加入。更不用说SMTP和POP服务器。你真的必须看看哪个头在检查过的邮件中可以找到ER,然后取出最可能需要的邮件。谷歌搜索电子邮件标题,并列出你自己想要的邮件(注意同义词)。谢谢Dalen!我确实有一些示例标题,现在在您的指导下将它们读入变量,但是似乎无法使用您的语法?测试它,它可以工作-headers=Parser().parse(open(“mailheader.txt”,“r”))。但是,我不会接受打印消息[“X-Mailer”],例如,而是打印(标题['From:'))将至少不返回任何内容。我想我有一些东西要读,但如果您有一些指示,我将不胜感激!如果您使用的是Python 3.x,那么电子邮件模块中引入了一些更改,因此我的示例中的一些内容可能不起作用。首先,如果是3.x,请尝试打印(msg[“x-Mailer”])-带括号。要了解电子邮件传递给您的步骤,您必须提取所有“已接收”标题。对于完整的MX记录,您必须从DNS服务器查询它们。即,获取“已接收”中列出的每个IP或域的可能服务器的完整列表标题。当标题不存在时,则不返回任何标题。如果没有“发件人”,那么,可以用其他标题代替它。例如,“回复到”或“返回路径”或“X-Rcpt-Trace”或“信封发件人”。尽管这是我听说的第一封没有标准“发件人”的电子邮件标头。我希望服务器甚至都不想通过这样的电子邮件。在文本编辑器中打开电子邮件,您将能够比较其中的内容和您得到的内容。我重复:msg.keys()将返回检查过的电子邮件的所有现有标题。欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。并在此处申请。StackOverflow不是设计、编码、研究或教程服务。请注意Prune。感谢您让我直截了当!请确保在fu中更多地考虑这一点真的帖子。欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。并在此处申请。StackOverflow不是设计、编码、研究或教程服务。注意:Prune。感谢你让我直截了当!请确保在以后的帖子中更多地考虑这一点。