Himalaya Email Manager 是一个基于 Himalaya IMAP CLI 工具的邮件管理技能,用于搜索、汇总、保存和删除 IMAP 账户中的电子邮件,并支持将自然语言查询转换为相应的脚本调用。
用途
通过命令行脚本管理 IMAP 邮箱:获取每日邮件汇总、按条件搜索邮件、将邮件内容保存为文件、以及删除邮件。适合需要在终端环境中批量处理或审阅邮件的场景。
主要能力
- 每日汇总:email-summary.py 显示过去 24 小时内 INBOX 和 Sent 文件夹的邮件,以 Rich 表格格式输出时间戳、发件人和主题,按文件夹分类(📥 INBOX、📤 Sent),支持 Unicode(含芬兰语字符和 emoji)。可用 -v/--verbose 查看实际执行的 himalaya 命令。
- 搜索:email-search.py 支持按发件人(--from,匹配名称和邮箱地址,不区分大小写)、主题(--subject,不区分大小写)、日期范围(--date-start / --date-end,格式 YYYY-MM-DD)和文件夹(--folder,默认 INBOX)过滤,多条件为 AND 逻辑。结果包含用于删除的消息 ID。--limit 限制结果数(默认 20,上限 100),--no-limit 绕过 100 条上限。
- 保存:email_save.py 将指定 message-id 的邮件保存为 markdown、text 或 json 格式(默认 markdown)。--output 指定目录或文件路径;--date-prefix 添加 YYYY-MM-DD 日期前缀(使用邮件日期,文件名中空格和 emoji 保留,斜杠转为短横线);--download-attachments 下载附件,--attachment-dir 指定附件目录(默认与邮件保存位置相同);--overwrite 覆盖已有文件而无需确认。
- 删除:email-delete.py 按 message-id 删除邮件,默认 dry-run 预览模式,需加 --execute 才真正执行;交互模式下会提示确认。建议先 dry-run 验证邮件,再确认后执行。
使用方式
所有脚本通过 uv run 调用,例如 uv run scripts/email-summary.py、uv run scripts/email-search.py --from "spotify.com"、uv run scripts/email_save.py 56873 --format json、uv run scripts/email-delete.py 56838 --execute。脚本使用 PEP 723 内联元数据,要求 Python 3.13+,依赖 typer 和 rich,由 uv 自动管理环境与依赖。配置位于 ~/.config/himalaya/config.toml。
自然语言查询对应关系
汇总类(如“显示我今天的邮件”)→ email-summary.py;搜索类(如“查找来自 Spotify 的邮件”)→ email-search.py --from "spotify.com";保存类(如“保存邮件 ID 56873”)→ email_save.py 56873;删除类(如“删除邮件 ID 56838”)→ email-delete.py 56838 并先预览确认。推荐的搜索与删除流程为:用 email-search.py 查找消息,与用户复核结果,用 dry-run 预览删除,获得确认后再用 --execute 执行。
适用场景与限制
适用于通过 IMAP 在命令行中审阅、导出和清理邮件的工作流。限制与注意事项:不要使用 --since 或 --until(未实现,应使用 --date-start/--date-end);无法搜索正文内容(JSON 输出仅包含头部信息);删除时必须记得加 --execute(默认 dry-run);日期格式必须为 YYYY-MM-DD。技术背景:后端为 Himalaya v1.1.0(Rust 编写的 IMAP CLI 工具),Python 3.13 配合 typer 和 rich;系统须预先安装 Himalaya;认证基于 keyring(由 Himalaya 管理);协议为 IMAP over TLS,直连服务器;所有搜索过滤不区分大小写;通过 sys.stdin.isatty() 判断是否交互式运行。