email

v2026.09.24

邮件处理工具(基于 IMAP)。搜索、读取、下载附件、移动邮件。 触发场景: - 用户需要查看、搜索、管理邮件 - 用户需要下载邮件附件 - 用户需要移动、归档邮件 - 用户提到"邮件"、"邮箱"、"收件箱"、"附件"

GitHub
安装命令
npx skhub add zrong/email
Markdown
SKILL.md

邮件处理 Skill

基于 IMAP 协议的邮件 CLI 工具。Python 3.13+ 必需。

首次使用

运行 init 命令交互式创建配置:

python3 scripts/email_tool.py init

会依次询问:

  1. 配置文件保存路径(默认 agent_config.toml,保存在当前项目目录)
  2. 账户名(默认 qqmail)
  3. 邮箱地址、IMAP/SMTP 服务器信息
  4. 密码/授权码

结果:

  • 配置(含密码)写入 agent_config.toml(与其他 skill 共用同一配置文件)
  • 密码同时写入 .env(优先级更高)
  • 自动将 .env 加入 .gitignore
  • 自动测试 IMAP 连接

配置说明

配置文件为 agent_config.toml(多 skill 共用,按 [skill名] 分区)。 查找策略:当前目录 → skill 目录 → git 根目录。 模板位于 skill 目录的 agent_config.example.toml。

agent_config.toml([email] 区块):

[email.accounts.qqmail]
email = "user@example.com"
imap_host = "imap.qq.com"
imap_port = 993
smtp_host = "smtp.qq.com"
smtp_port = 465
password = "your_app_password"

密码优先级(从高到低):

  1. .env 文件中的 EMAIL_{ACCOUNT}_PASSWORD 环境变量
  2. agent_config.toml 中账户的 password 字段

环境变量命名规则:EMAIL_{ACCOUNT}_PASSWORD,ACCOUNT 为账户名大写。

脚本路径

相对于 skill 安装目录:scripts/email_tool.py

所有命令在项目目录下执行(配置文件通过三位置发现策略自动查找)。

命令速查

命令用途示例
init交互式初始化配置email_tool.py init
folders列出所有文件夹email_tool.py folders
list搜索列出邮件email_tool.py list --subject "发票" --last 5
read读取邮件内容email_tool.py read --uid 12345
download下载附件email_tool.py download --subject "发票" --ext pdf --output-dir /tmp
move移动邮件email_tool.py move --subject "账单" --target-folder "账单" --yes
search-links从 HTML 提取链接email_tool.py search-links --subject "京东"

通用参数

  • --config PATH:配置文件路径(默认使用 agent_config.toml 三位置发现策略)
  • --account NAME:账户名(默认 qqmail)
  • --subject TEXT:主题关键词搜索
  • --sender TEXT:发件人搜索
  • --since DD-Mon-YYYY:起始日期(如 01-Jan-2026)
  • --before DD-Mon-YYYY:截止日期
  • --last N:只处理最新 N 封

命令详情

init - 初始化配置

email_tool.py init
# 或指定配置路径
email_tool.py --config /path/to/agent_config.toml init

交互式询问账户信息,自动:

  • 创建或追加到 agent_config.toml([email.accounts.{name}] 区块)
  • 将密码同时写入 .env(不覆盖已有内容)
  • 将 .env 加入 .gitignore
  • 测试 IMAP 连接

list - 列出邮件

email_tool.py list --subject "发票"
email_tool.py list --sender "jd.com" --last 3
email_tool.py list --subject "报告" --folder "工作"

输出 JSON 包含 uid、subject、from、date。

read - 读取邮件内容

email_tool.py read --uid 12345 12346
email_tool.py read --subject "发票" --last 1
email_tool.py read --uid 12345 --html

输出 JSON 包含 body、content_type、attachments(附件列表)。

download - 下载附件

email_tool.py download --uid 12345 --output-dir /tmp/attachments
email_tool.py download --subject "发票" --ext pdf --output-dir /tmp/invoices
email_tool.py download --subject "报销" --last 1 --output-dir .

move - 移动邮件

# dry run(默认,只列出不移动)
email_tool.py move --subject "账单" --target-folder "账单"
# 执行移动
email_tool.py move --subject "账单" --target-folder "账单" --yes
# 只移动最新一封
email_tool.py move --subject "通知" --target-folder "归档" --last 1 --yes

文件夹名支持中文,自动处理 IMAP modified UTF-7 编码。优先使用 MOVE 命令,不支持时降级 COPY+DELETE。

search-links - 提取链接

email_tool.py search-links --subject "京东"
email_tool.py search-links --sender "didifapiao"

输出 JSON 包含 pdf_links、xml_links、invoice_numbers。

注意事项

  1. Python 版本:必须 3.13+,无第三方依赖
  2. QQ 邮箱需要使用授权码(非登录密码),在 QQ 邮箱设置 → 账户 → IMAP 服务中生成
  3. 密码安全:密码可存放在 agent_config.toml 的 password 字段中,或通过环境变量 EMAIL_{ACCOUNT}_PASSWORD 读取(环境变量优先)
  4. IMAP 搜索支持中文(自动使用 UTF-8 charset)
  5. QQ Mail BEFORE bug:QQ 邮箱 IMAP 在 CHARSET UTF-8 模式下 BEFORE 关键词返回空结果。工具已自动处理:服务端只发 SINCE,BEFORE 在本地按 Date 头过滤
  6. move 命令默认 dry run,必须加 --yes 才执行
  7. download 的 --ext 参数支持逗号分隔多个扩展名(如 pdf,xml)
  8. 日期格式为 IMAP 标准格式:DD-Mon-YYYY(如 15-Mar-2026)
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

未指定

源路径

email

默认分支

main

最新提交

c893d98

Tree SHA

bd0e487