You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 20:51:02