我想解析用户收件箱中的一些电子邮件,但是当我这样做时:

typ, msg_data = imap_conn.fetch(uid, '(RFC822)')

它将电子邮件标记为“已查看”或“已读”。这不是所需的功能。您知道如何才能使电子邮件保持之前的状态(“已查看”或“未查看”)吗?

有帮助吗?

解决方案

你也可以设置 read_only 选择文件夹时为 true:

imap_conn.select('Inbox', readonly=True)

其他提示

以下应该有效:

typ, msg_data = imap_conn.fetch(uid, '(BODY.PEEK[HEADER])')
.

BODY.PEEK[TEXT]等。

您可以使用 (RFC822.PEEK) 作为“消息部分”参数,根据 RFC 1730 (我还没有验证哪些服务器实际上正确地实现了这一点,但对他们来说似乎并不难)。

您可以使用imap_tools包: https://pypi.org/project/imap-tools/

from imap_tools import MailBox, Q

# get list of email subjects from INBOX folder
with MailBox('imap.mail.com').login('test@mail.com', 'password') as mailbox:
    # mark_seen=False - not mark emails as seen on fetch
    subjects = [msg.subject for msg in mailbox.fetch(mark_seen=False)]
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top