字符串格式的电子邮件的有效载荷,python

问题描述:

我使用get_payload()方法获得了有效载荷作为字符串实例。但我希望我的有效载荷能够以我能够逐字访问的方式运行 我尝试了几种方法,如as_string() method, flatten() method, get_charset() method,但每次都有问题。字符串格式的电子邮件的有效载荷,python

我用下面的代码

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

你没有提到你实际上有什么问题 – jdi 2011-12-18 18:13:01

+0

两次导入是没用的。你应该删除第二行。 – rubik 2011-12-18 18:19:13

+0

非常感谢,其实我是新的这种语言 我需要的是获得一个列表,以便我可以访问该列表中的每个单词 – Puneet 2011-12-18 18:27:48

与一对夫妇我自己生的电子邮件只是测试你的代码段有我的有效载荷。做工精细...

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竟是你在有趣的对象。

+0

只有else循环正在工作, ,当我尝试将其更改为字符串时,它表示有效负载是消息实例 – Puneet 2011-12-18 18:28:34

+0

@puneet - 更新了我的答案。对于消息实例,您可以调用get_payload()来获取正文内容。 – jdi 2011-12-18 18:45:21

+0

是的,它工作后用“对象”替换“列表”,但我仍然无法让单词分离,现在它显示我在不同的行中的每个字符与以下代码 ifinstance(payload,object): for米有效载荷: print str(m) – Puneet 2011-12-18 19:00:22

我得到了我的有效载荷为一个字符串作为我的FP不是多部分 如果它可能已被一多,它会返回的字符串 的列表,以便现在就可以使用下面的代码

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

它给我的输出如下 [“好”,“天\ nhttp://72.167。 116.186/image/bdfedx.php?iqunin = 3D41 \ n \ n','','','','','','','','','','','','','' 'Sun','18','Dec','2011','10:53:43 \ n_ _ __ _ __ _ __ _ __ _ __ _ \ n“她 ' '消灭', '他', '干', '有', '软',' 绒布,''''和','给'''他','一些','干净','干','衣服,='n','和','制造','他','非常','('),'Lyrica','wa946758 \ n']

感谢jdi :) ps由于存在一些限制,因此无法将其作为昨天的答案