如何使用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 个回答
1
听起来你在找 email
这个包:
这个 email 包提供了一个标准的解析器,可以理解大多数电子邮件的结构,包括 MIME 格式的邮件。你可以把一个字符串或者一个文件对象传给这个解析器,它会返回一个根消息实例,代表这个对象的结构。对于简单的非 MIME 邮件,这个根对象的内容通常是一个包含邮件文本的字符串。而对于 MIME 邮件,根对象会通过它的 is_multipart() 方法返回 True,你可以通过 get_payload() 和 walk() 方法来访问邮件的各个部分。