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

发布于 2024-10-09 02:47:47 字数 768 浏览 4 评论 0原文

我对编程和 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):

获取电子邮件()

    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

I am relatively new to programming and to python, but I think I have done ok so far. This is the code I have, and it works fine, except it gets the entire message in MIME format. I only want the text body of unread emails, but I can't quite figure it out how to strip out all of the formatting and header info. If I send a basic email using a smtp python script that I made it works fine, and only prints the body, but if I send the email using outlook it prints a bunch of extra garbage. Any help is very much appreciated.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

游魂 2024-10-16 02:47:47

听起来您正在寻找 电子邮件 封装:

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

Sounds like you're looking for the email package:

The email package provides a standard parser that understands most email document structures, including MIME documents. You can pass the parser a string or a file object, and the parser will return to you the root Message instance of the object structure. For simple, non-MIME messages the payload of this root object will likely be a string containing the text of the message. For MIME messages, the root object will return True from its is_multipart() method, and the subparts can be accessed via the get_payload() and walk() methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文