【问题标题】:payload of an email in string format, python字符串格式的电子邮件有效负载,python
【发布时间】:2011-12-20 05:14:00
【问题描述】:

我使用get_payload() 方法将有效负载作为字符串实例。但我希望我的有效载荷能够逐字访问它 我尝试了几种类似 as_string() method, flatten() method, get_charset() method 的方法,但每次都有一些问题。

我使用以下代码获得了有效载荷

import email
from email import *
f=open('mail.txt','r')
obj=email.parser.Parser()
fp=obj.parse(f)
payload=fp.get_payload()

【问题讨论】:

  • 你没有提到你实际有什么问题
  • 导入两次没用。您应该删除第二行。
  • 非常感谢,实际上我是这种语言的新手 我需要的是获取一个列表,以便我可以访问该列表中的每个单词
  • @rubik - 他实际上应该用import email.parser替换这两行
  • 我认为 get_payload() 方法的设计确实很糟糕。它返回结果的这种混合变化。您可以获取消息实例列表、单个消息实例或字符串。它实际上应该总是返回一个消息实例列表,即使它是一个元素。我不喜欢可变返回签名。

标签: python string email payload


【解决方案1】:

刚刚用我自己的几封原始电子邮件测试了您的 sn-p。工作正常...

get_payload() 返回一个列表或字符串,所以你需要先检查一下

if isinstance(payload, list):
    for m in payload:
        print str(m).split()

else:
    print str(m).split()

编辑

根据我们的讨论,您的问题是您没有在 fp 对象上检查 is_multipart(),该对象实际上是一个消息实例。如果 fp.is_multipart() == True,则 get_payload() 将返回消息实例列表。在您的情况下,根据您的示例邮件消息,它不是多部分的,而 fp 实际上是您感兴趣的对象。

【讨论】:

  • 只有else循环在工作,当我尝试将其更改为字符串时,它说payload是一个消息实例
  • @puneet - 更新了我的答案。对于消息实例,您可以调用 get_payload() 来获取正文内容。
  • 是的,在将“list”替换为“object”后它可以工作,但我仍然无法将单词分开,现在如果 isinstance(payload) 使用以下代码在不同的行中显示每个字符, object): for m in payload: print str(m)
  • 那是完全错误的。 python 中的一切都是对象的实例。 object 是所有新类的基类,因此您只是强制一个字符串在该部分代码中运行。它打印每个字符,因为您正在循环字符串并打印每个章程。我再次更新以尝试为您提供所需的输出。最好尝试检查每个可能的输出:实例列表、字符串列表、字符串、实例,但是当您应该能够从中获得要点时,我不想为您输入大量的代码.
  • 我试过了,但即使这样也显示了不同索引处的每个字符
【解决方案2】:

我的有效载荷是一个字符串,因为我的 fp 不是多部分的 如果它可以是多部分的,它会返回一个字符串列表 所以现在我可以使用以下代码

payload=fp.get_payload()
abc=payload.split(" ")

它给我的输出如下 ['good', 'day\nhttp://72.167.116.186/image/bdfedx.php?iqunin=3D41\n\n', '', '', '', '', '', '', ' ', '', '', '', '', 'Sun,', '18', 'Dec', '2011', '10:53:43\n__ _______________\ n“她”、“擦”、“他”、“干”、“用”、“柔软”、“法兰绒”、“和”、“给”、“他”、“一些”、“干净” , 'dry', 'clothes,=\n', 'and', 'made', 'him', 'very', 'comfortable', 'again.', '(c)', 'Lyrica', ' wa946758\n']

感谢 jdi :) p.s.昨天无法将其作为答案发布,因为积分有一些限制

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2018-02-15
    • 1970-01-01
    相关资源
    最近更新 更多