Python的imap_tools库设置mark_seen=False后如何条件标记邮件已读?
实现方案
这个需求完全可以实现,你当前代码中fetch方法传入mark_seen=False已经完成了「读取邮件不自动标记已读」的逻辑,仅需在满足条件的分支调用标记已读的接口即可。
修正后完整代码
from imap_tools import MailBox, AND with MailBox('imap.gmail.com').login('username', 'password', 'INBOX') as mailbox: for msg in mailbox.fetch(AND(from_="some_domain"), mark_seen=False): prt_msg_text = msg.text if 'some_text' in prt_msg_text: # 满足条件时标记当前邮件为已读 mailbox.seen(msg.uid, True)
逻辑说明
- 注意
mark_seen是fetch方法的参数,不是AND查询条件的参数,原代码的参数位置有误,上述代码已做修正 mailbox.seen()是官方提供的状态修改接口:第一个参数传入目标邮件的uid,第二个参数为True表示标记为已读,为False则表示标记为未读- 如需批量标记已读,可将多个邮件uid组装为列表传入第一个参数,例如
mailbox.seen([uid1, uid2], True)
内容的提问来源于stack exchange,提问作者the_guy71639
相关产品推荐
相关产品推荐

