我使用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()
答案 0 :(得分:1)
刚刚使用我自己的几封原始电子邮件测试了您的代码段。工作得很好......
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实际上是您感兴趣的对象。
答案 1 :(得分:0)
我的有效载荷是一个字符串,因为我的fp不是多部分 如果它可能是一个多部分,它将返回一个字符串列表 所以现在我可以使用以下代码
payload=fp.get_payload()
abc=payload.split(" ")
它给出了如下输出 ['good','day \ nhttp://72.167.116.186/image/bdfedx.php?iqunin = 3D41 \ n \ n','','','','','','',' ','','','','','太阳,','18','十二月','2011','10:53:43 \ n _ _ __ _ __ _ __ _ __ _ __ _ 强> \ n“她”,“擦”,“他”,“干”,“带”,“柔软”,“法兰绒”,“和”,“给予”,“他们”,“有些”,“干净”, ,'干','衣服,= \ n','和','制造','他','非常','舒服','再次'。'','(c)','Lyrica',' wa946758 \ N']
感谢jdi :) 附:昨天无法将其作为答案发布,因为点数存在一些限制