如何使用IMAP仅使用Python提取电子邮件正文?

时间:2010-12-20 20:23:28

标签: python printing imap

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

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

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找email包:

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