使用 imaplib 获取电子邮件,但不要将其标记为“已读”
题
我想解析用户收件箱中的一些电子邮件,但是当我这样做时:
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)]
. 不隶属于 StackOverflow