地图工具。将带有附件的邮件标记为仅'seen'



我正在使用imap-tools从未读邮件中下载附件。我需要标记为只看到那些包含附件的邮件,并已下载。下面的代码可以工作,但是将标记为所有未读消息

import ssl
from imap_tools import MailBox, AND
from datetime import date
context = ssl.create_default_context()
today = date.today()
with MailBox('imap.gmail.com', ssl_context=context).login('email', 'password', 'INBOX') as mailbox:
for msg in mailbox.fetch(AND(seen=False), mark_seen = True, bulk = True):
for att in msg.attachments:
print(att.filename, today)
if att.filename.lower().endswith('.xlsx'):
with open('D:/pp/nf/mail/1.txt', 'a') as f:
print(att.filename, today, file=f)
with open('D:/pp/nf/mail/{}'.format(att.filename), 'wb') as f:
f.write(att.payload)
seen_msgs = []
for msg in mailbox.fetch(AND(seen=False), mark_seen = False, bulk = True):
for att in msg.attachments:
print(att.filename, today)
if att.filename.lower().endswith('.xlsx'):
with open('D:/pp/nf/mail/1.txt', 'a') as f:
print(att.filename, today, file=f)
with open('D:/pp/nf/mail/{}'.format(att.filename), 'wb') as f:
f.write(att.payload)
seen_msgs.append(msg.uid)
mailbox.flag(seen_msgs, [imap_tools.MailMessageFlags.SEEN], True)

正确答案:

使用fetch参数mark_seen=False

最新更新