关于 apple-mail-search
用于搜索和读取 Apple Mail 本地数据库邮件的命令行技能。可按发件人、主题、日期、账户和邮箱筛选,无需打开 Mail.app。
主要功能
- 01列出账户和邮箱
- 02按主题、发件人或日期搜索
- 03按账户和邮箱筛选
- 04查看最近或未读邮件
- 05读取邮件内容并按日期导出
适用场景
- 01按发件人或主题查找邮件
- 02检查近期或已标记邮件
- 03无需打开 Mail.app 阅读指定邮件
- 04导出指定日期的邮件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nicolaischmid/ agent-skills --skill apple-mail-search安装后在 Claude Code 中输入/apple-mail-search确认已加载。
附带文件README.mdscripts/mail-search
详细介绍
Apple Mail 搜索
直接对 Apple Mail 的 Envelope Index 数据库执行 SQL 搜索。针对所有邮件账户的查询均可在 0.5 秒内完成。
适用场景
- 需要按主题、发件人或日期查找邮件。
- 想要列出可用的邮箱和账户。
- 需要快速搜索,无需打开 Mail.app。
- 想要读取特定邮件的内容。
工作原理
- 读取 Apple Mail 的
Envelope IndexSQLite 数据库,路径为~/Library/Mail/V10/MailData/ - 将邮件与主题、地址和邮箱表进行联接
- 返回匹配邮件的元数据(主题、发件人、日期、邮箱)
- 需要时,可从
.emlx文件中检索完整邮件内容
Mail.app 会实时写入数据库,因此数据库始终保持最新。
用法
# List all configured mail accounts
mail-search accounts
# List all mailboxes for an account
mail-search mailboxes --account "Wasc.me"
# Search by subject (case-insensitive, substring match)
mail-search search --subject "invoice"
# Search by sender
mail-search search --sender "github.com"
# Search in message body/preview
mail-search search --body "tracking number"
# Search within a specific account
mail-search search --subject "receipt" --account "iCloud"
# Search within a specific mailbox
mail-search search --subject "order" --mailbox "INBOX" --account "Wasc.me"
# Search by date range
mail-search search --subject "meeting" --after "2026-01-01" --before "2026-01-31"
# Limit results
mail-search search --sender "amazon" --limit 10
# Get recent messages
mail-search recent --limit 20
# Get recent messages from a specific account
mail-search recent --account "Wasc.me" --limit 10
# Read full content of a message by ID
mail-search read --id 329402
# Dump messages from a specific date
mail-search dump --date "2026-01-25"
命令
| 命令 | 说明 |
|---|---|
accounts | 列出所有已配置的邮件账户 |
mailboxes | 列出某个账户的邮箱 |
search | 按主题、发件人、日期搜索邮件 |
recent | 获取最新邮件 |
read | 阅读特定邮件的完整内容 |
dump | 导出特定日期的所有邮件 |
搜索标志
| 标志 | 简写 | 说明 |
|---|---|---|
--subject <text> | -s | 搜索主题(不区分大小写的子字符串) |
--sender <text> | -f | 搜索发件人地址或名称 |
--body <text> | -b | 搜索邮件正文/预览(使用摘要) |
--account <name> | -a | 筛选指定账户 |
--mailbox <name> | -m | 筛选指定邮箱 |
--after <YYYY-MM-DD> | 此日期之后收到的邮件 | |
--before <YYYY-MM-DD> | 此日期之前收到的邮件 | |
--limit <n> | -n | 最大结果数(默认:50) |
--unread | -u | 仅显示未读邮件 |
--flagged | -F | 仅显示已标记邮件 |
输出格式
[329402] 2026-01-25 22:39 | [email protected] (vercel[bot])
[shadcn-ui/ui] fix: copy button copies full code even when collapsed (PR #9451)
Mailbox: Wasc.me/INBOX
- 第一行:邮件 ID、日期/时间、发件人
- 第二行:主题
- 第三行:账户/邮箱路径
性能
| 操作 | 耗时 |
|---|---|
| 列出账户 | <0.1s |
| 搜索(任意条件) | <0.3s |
| 读取邮件内容 | <0.2s |
数据库架构
Envelope Index 中的关键表:
messages- 邮件元数据(发件人、主题引用、日期、标记)subjects- 主题文本(已规范化)addresses- 电子邮件地址和显示名称mailboxes- 邮箱 URL(账户/文件夹结构)summaries- 邮件预览摘要
安全注意事项
- 以只读方式访问 Mail 的 SQLite 数据库
- 不会修改或写入任何数据
- 不发起网络请求;所有操作均在本地进行
- 搜索在本地进行;任何内容都不会离开你的设备
故障排除
- “找不到数据库”:确保至少打开过一次 Apple Mail
- “数据库已锁定”:Mail.app 可能正在同步;请稍后重试
- 结果为空:使用
accounts和mailboxes命令检查账户/邮箱名称 - 缺少邮件内容:部分邮件可能尚未完整下载(IMAP);需要 Mail.app 下载完整内容
限制
- 正文搜索使用
summaries表(邮件预览),而非完整邮件内容 - 如需全文搜索正文,请使用
read --id获取完整邮件内容 - 此工具无法搜索附件
- 已删除的邮件(在废纸篓中)可能仍会显示,直至被永久删除
评论
支持 Markdown