我想从用户的收件箱中解析一些电子邮件,但是当我这样做时:
typ, msg_data = imap_conn.fetch(uid, '(RFC822)')
它将电子邮件标记为SEEN或阅读。这不是所需的功能。你知道我怎么能把电子邮件保持在以前的凝视状态,无论是看到还是看不到?
答案 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)]