2010-12-20 84 views
0

我相对比较新的编程和python,但我认为我做得很好。这是我的代码,并且它工作正常,除了它以MIME格式获取整个消息。我只想要未读电子邮件的文本正文,但我无法弄清楚如何去除所有格式和标题信息。如果我使用一个smtp python脚本发送一个基本电子邮件,我使它工作正常,并且只打印正文,但是如果我使用outlook发送电子邮件,它会打印一堆额外的垃圾。很感谢任何形式的帮助。如何仅使用IMAP提取Python的电子邮件正文?

client = imaplib.IMAP4_SSL(PopServer) 

client.login(USER, PASSWORD) 
client.select('INBOX') 
status, email_ids = client.search(None, '(UNSEEN SUBJECT "%s")' % PrintSubject) 
print email_ids 
client.store(email_ids[0].replace(' ',','),'+FLAGS','\Seen') 
for email in get_emails(email_ids): 

get_emails()

def get_emails(email_ids): 
     data = [] 
     for e_id in email_ids[0].split(): 
      _, response = client.fetch(e_id, '(UID BODY[TEXT])') 
      data.append(response[0][1]) 
     return data 
+0

如果我回想起来,outlook程序遵循自己的电子邮件标准(包括一些“额外的垃圾”)。试着用谷歌搜索它的定义。 – martineau 2010-12-20 20:38:56

回答

1

听起来你正在寻找的email包:

电子邮件包提供了一个标准的解析器,了解大多数电子邮件文档结构,包括MIME文件。您可以将解析器传递给字符串或文件对象,并且解析器将返回对象结构的根消息实例。对于简单的非MIME消息,这个根对象的负载可能是一个包含消息文本的字符串。对于MIME消息,根对象将从其is_multipart()方法返回True,并且可以通过get_payload()和walk()方法访问子部分。
相关问题