用途:通过 IMAP 协议连接邮箱(默认 QQ 邮箱),读取指定时间范围内的邮件、下载附件与正文内嵌图片,并由 Agent 为每封邮件生成摘要;也支持轮询监听新邮件到达后自动处理。
主要能力:按天数或日期区间读取邮件,支持指定文件夹、最大数量与正文截取长度;自动解析邮件头、提取正文、下载附件;保存三类正文图片(CID 内联图片、HTML 外链图片、Base64 嵌入图);按“时间+主题”为每封邮件建独立目录,含附件、images/ 与 sum.md 摘要;脚本向 stdout 输出 JSON,进度信息输出到 stderr。
前置配置:需设置环境变量或通过参数传入 IMAP 服务器、邮箱地址与授权码(授权码非登录密码)。QQ 邮箱获取授权码路径:QQ邮箱 → 设置 → 账户 → POP3/IMAP/SMTP服务 → 开启 IMAP → 生成授权码。示例: export MAIL_IMAP_SERVER="imap.qq.com" export MAIL_ADDR="your_email@qq.com" export MAIL_AUTH_CODE="your_auth_code"
使用方式:读取邮件运行 python3 scripts/read_emails.py --email "you@qq.com" --auth-code "YOUR_CODE" --days 7;常用参数包括 --since、--until、--folder(默认 INBOX)、--output-dir(默认 ./mails)、--limit(默认 100)、--body-length(默认 3000)。监听运行 python3 scripts/listen_emails.py --start,后台加 > /dev/null 2>&1 &;--status 查看状态,--stop 停止,--once 测试一次。脚本位于 scripts/read_emails.py 与 scripts/listen_emails.py。
依赖:Python 3.8+;监听模式需 imapclient(pip3 install imapclient)。
限制:授权码应通过环境变量传入,避免在输出中显示完整授权码;超大附件(>50MB)可能被 IMAP 服务器跳过;部分邮箱有频率限制,监听轮询间隔默认 30 秒;QQ 邮箱 IMAP IDLE 不推送事件,已内置轮询兜底,故监听可能有延迟。脚本自动处理 UTF-8/GBK/GB2312 编码。登录失败先检查授权码与 IMAP 是否开启;找不到邮件可扩大时间范围或核对文件夹名。