使用imaplib获取电子邮件但不要将其标记为SEEN

时间:2010-07-19 17:34:05

标签: python gmail imaplib

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

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

它将电子邮件标记为SEEN或阅读。这不是所需的功能。你知道我怎么能把电子邮件保持在以前的凝视状态,无论是看到还是看不到?

4 个答案:

答案 0 :(得分:38)

选择文件夹时,您也可以将read_only设置为true:

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

答案 1 :(得分:18)

以下内容应该有效:

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

BODY.PEEK[TEXT]

答案 2 :(得分:2)

根据RFC 1730,您可以使用(RFC822.PEEK)作为“message-parts”参数(我还没有验证哪些服务器实际上正确实现了这一点,但它们似乎并不难)

答案 3 :(得分:0)

您可以使用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)]