在 Agent 中监听新邮件推送以及自动化流程

Agent Mail CLI 1.0.9 版本正式支持邮件推送通知功能。通过 agently-cli message +watch 命令,Agent 可以实时监听新邮件到达,无需再通过轮询方式低效检查收件箱。轮询方式延迟高、消耗 API 配额且容易触发频率限制,推送监听方式实时、高效、无额外的 token 开销。

需要注意的是,大多数邮件并不需要及时处理,如果你的场景不要求实时响应,则可以通过 Agent 的定时任务(例如 WorkBuddy 的自动化,或 QClaw 的任务功能)完成,你无需使用这个推送监听功能。

另外需要注意,如果电脑休眠、断网,或关闭了运行监听的脚本或 Agent,邮件推送的监听可能会中断。如果你有已经在轮询监听任务,你可先使用  agently-cli message +watch 推送邮件实现相同功能并充分验证和测试后,再暂停或结束原先的轮询任务会更好一些。

 

轮询 vs 推送监听

  轮询方式(旧) 推送监听(新)
实时性 延迟数秒~数分钟 毫秒级实时
资源消耗 持续占用 CPU / API 配额 事件驱动,空闲不消耗
API 限制 易触发频率限制 无额外 API 调用
实现复杂度 需手动管理定时器与重试 一行命令即可启动

 

快速开始

01 安装/升级 CLI 至最新版
npm install -g @tencent-qqmail/agently-cli
02 启动邮件推送监听

可以使用自然语言告诉 Agent,比如“使用 agently-cli message +watch 帮我监听新邮件通知”,或直接在终端输入指令:

agently-cli message +watch

终端将持续输出实时新邮件通知(NDJSON 格式),每封新邮件以一行 JSON 推送:

{"message":{"attachment_count":1,"attachments":[{"attachment_id":"att_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","content_type":"image/png","filename":"邮件附件.png","size":"102400"}],"body":"<div>邮件正文</div>","body_format":"HTML","created_at":"2026-01-01T00:00:00Z","dir":{"dir_id":1,"dir_name":"inbox"},"from":{"email":"sender@example.com","name":"发件人"},"has_attachments":true,"is_read":false,"message_id":"msg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","rfc_message_id":"<xxxxxxxx@qq.com>","subject":"邮件标题","to":[{"email":"you@agent.qq.com","name":"收件人"}]}}

 

使用示例

示例一:新邮件桌面通知提醒

收到新邮件时,直接在电脑桌面弹出系统通知,功能比较简易,但是能满足 Agent Mail 及时推送需求。

你可以复制下方的自然语言指令,发送给 Agent 试试:

帮我使用 agently-cli message +watch 监听新邮件,当收到新邮件以后使用终端的消息推送,将消息推送给我到我的桌面。推送弹窗上要有按钮可以打开 agent.qq.com 页面,Windows 系统建议使用 PowerShell Windows Toast,Mac 系统建议弹窗使用 AppleScript Display Dialog。

 

示例二:自动回复邮件

当 Agent Mail 收到特定发件人的邮件时,可以自动回复。

你可以复制下方的自然语言指令,发送给 Agent 试试,边界场景描述越具体,Agent 写出的监听脚本越稳定:

需要注意的是,下面示例中的自动回复是回复固定内容,因为脚本运行时无法唤起 Agent。如果希望针对邮件内容生成个性化回复,可以在脚本中接入大模型 API,通过调用 API 来实现智能自动回复。

用 agently-cli message +watch 帮我监听新邮件,实现自动回复:
1. 只处理发件邮箱地址为 {替换为真实发件邮箱地址} 的邮件;
2. 如果发件人本身是系统通知或自动回复邮件(主题含“自动回复”/“undeliverable”,或邮件头带 Auto-Submitted),跳过,避免死循环;
3. 同一个发件人只自动回复一次,同一封邮件不要重复回复;
4. 回复内容:“我已休假,预计 7 月 20 日返回,紧急事务请联系 {替换为真实紧急联系人邮箱}”;
5. 保留原邮件主题和线程回复,不要新建邮件;
6. 每次处理完打印一行日志,方便我确认执行情况;
7. 监听进程要保持常驻运行,不能被意外杀掉。

 

示例三:收到邮件自动下载附件

你可以复制下方的自然语言指令,发送给 Agent 试试,边界场景描述越具体,Agent 写出的监听脚本越稳定:

用 agently-cli message +watch 帮我监听新邮件,实现自动下载发票附件:
1. 主题或正文包含“发票”/“账单”/invoice/receipt 关键词的邮件才处理;
2. 有些发票是邮件正文里的下载链接(URL),不是真实附件,也要识别并下载;
3. 按“年-月”分文件夹归档到 ~/Documents/Invoices/,同名文件不要覆盖,自动加序号;
4. 同一封邮件的附件不要重复下载;
5. 下载失败(如链接过期)要重试一次,仍失败则打印错误日志,不要中断监听。

 

总结

看不懂上面的输出或代码也没关系,不需要自己记住这些细节。你只要告诉 Agent 通过 agently-cli message +watch 监听新邮件,以及收到新邮件后要触发什么流程(比如自动回复、下载附件)即可,剩下的交给 Agent 处理。Agent 完成任务后,建议多测试几次,如果发现问题,直接把问题描述告诉 Agent,它会帮你调整解决。

 

常见问题

为什么我的推送没有响应?

可能是推送连接断开导致的,例如设备关机、设备休眠或者脚本已停用等;也可能是 Agent Mail 登录失效。可以先检查设备是否处于唤醒且联网状态,再确认 Agent Mail 的登录状态,如果 Agent 被解除绑定邮箱后,推送也会失效。如果 CLI 登录失效了,请重新登录后重启监听命令。

如何终止监听任务?

不需要自己找终端进程手动 kill,直接用自然语言告诉 Agent,例如“帮我终止 agently-cli message +watch 监听任务”,Agent 会自动结束对应进程。

有帮助
无帮助
如未能解决你的问题,请点击 用户意见反馈