Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python email.Message对象';让我们接到有效载荷呼叫?_Python_Email - Fatal编程技术网

如何从Python email.Message对象';让我们接到有效载荷呼叫?

如何从Python email.Message对象';让我们接到有效载荷呼叫?,python,email,Python,Email,在测试工具中,我试图验证某个标识符是否出现在电子邮件中。已使用Python的内置email.message\u from_file()方法从文件解析消息 当我使用get_payload检索消息内容时,它会跨多行断开,并包含行延续标记(行中的最后一个字符是=字符)。不幸的是,我要查找的标识符被拆分为一个换行符 虽然我可以更改消息的文本部分以避免标识符被拆分,但我更希望找到一种好的机制来重新组合连续的行并恢复原始字符串。有人能提出这样做的好方法吗?对于晚会的所有迟到者:使用decode标志作为方法:

在测试工具中,我试图验证某个标识符是否出现在电子邮件中。已使用Python的内置email.message\u from_file()方法从文件解析消息

当我使用get_payload检索消息内容时,它会跨多行断开,并包含行延续标记(行中的最后一个字符是=字符)。不幸的是,我要查找的标识符被拆分为一个换行符

虽然我可以更改消息的文本部分以避免标识符被拆分,但我更希望找到一种好的机制来重新组合连续的行并恢复原始字符串。有人能提出这样做的好方法吗?

对于晚会的所有迟到者:使用
decode
标志作为方法:

>>> s = 'blah blah iden=\ntifier blah blah'
>>> print s
blah blah iden=
tifier blah blah
>>> s.replace('=\n', '')
'blah blah identifier blah blah'
>>> s.replace('=\n', '').find('identifier')
10
这会正确地将
=
符号作为行末的延续标记进行剥离,因为只有在设置了适当的标题
内容传输编码:quoted printable
时才会这样做。

对于所有迟到者:使用
decode
标志进行方法:


这会正确地将
=
符号作为行尾的延续标记剥离,因为只有在设置了相应的标题
内容传输编码:quoted printable
时才会这样做。

D'oh!当然可以。对于稍后出现的任何人,整个行都是必需的:decoded=email.get_payload([payload index,如果需要的话])。as_string()。replace('=\n','')这可能不是正确的方法。如果您是从该文件生成电子邮件(请参阅我对上述问题的评论),此答案将更正您从get_payload()看到/得到的内容,但电子邮件对象的格式仍然不正确。哦!当然可以。对于稍后出现的任何人,整个行都是必需的:decoded=email.get_payload([payload index,如果需要的话])。as_string()。replace('=\n','')这可能不是正确的方法。如果您是从文件中生成电子邮件(请参阅我对上述问题的评论),此答案将更正您从get_payload()中看到/得到的内容,但电子邮件对象的格式仍然不正确。您是否尝试从文件中生成电子邮件对象?如果是,请注意,email.message_from_file()将根据RFC2822标准解析文件,其中“=”字符具有特殊含义。文件中由CRLF/“\r\n”分隔的每一行都作为电子邮件的一部分进行解析,格式为FIELD=VALUE。从get_payload()得到的意外结果是不正确解析的症状。感谢您的提醒。所讨论的电子邮件文件是在python的上下文中生成的(实际上是Django—一个基于EmailMultiAlternations的类)。获取_有效负载的响应确实与文件中存在的内容精确匹配。这是否意味着文件格式不正确,或者解析器应该识别并删除延续字符?对不起,关于“=”的电子邮件部分有点生疏(查看RFC2822,它是“:”,这是字段:VALUE)。假设文件符合标准,如果要在电子邮件正文中查找那些KEY=VALUE,请首先检查消息对象是否为_multipart()。如果为真,则需要隔离身体。如果为False,则可以立即调用get_payload()并获取字符串。get_负载将返回电子邮件附件和其他部分的字符串表示形式。必须执行mail.walk()操作才能将正文与多部分电子邮件隔离。是否尝试从文件中形成电子邮件对象?如果是,请注意,email.message_from_file()将根据RFC2822标准解析文件,其中“=”字符具有特殊含义。文件中由CRLF/“\r\n”分隔的每一行都作为电子邮件的一部分进行解析,格式为FIELD=VALUE。从get_payload()得到的意外结果是不正确解析的症状。感谢您的提醒。所讨论的电子邮件文件是在python的上下文中生成的(实际上是Django—一个基于EmailMultiAlternations的类)。获取_有效负载的响应确实与文件中存在的内容精确匹配。这是否意味着文件格式不正确,或者解析器应该识别并删除延续字符?对不起,关于“=”的电子邮件部分有点生疏(查看RFC2822,它是“:”,这是字段:VALUE)。假设文件符合标准,如果要在电子邮件正文中查找那些KEY=VALUE,请首先检查消息对象是否为_multipart()。如果为真,则需要隔离身体。如果为False,则可以立即调用get_payload()并获取字符串。get_负载将返回电子邮件附件和其他部分的字符串表示形式。您必须执行mail.walk()以将正文与多部分电子邮件隔离。
email.get_payload(decode=True)