mcpField
A
apple-mail-search

apple-mail-search

github.com/nicolaischmid生产力284 次安装39 周前更新
代码仓库

关于 apple-mail-search

用于搜索和读取 Apple Mail 本地数据库邮件的命令行技能。可按发件人、主题、日期、账户和邮箱筛选,无需打开 Mail.app。

主要功能

  1. 01列出账户和邮箱
  2. 02按主题、发件人或日期搜索
  3. 03按账户和邮箱筛选
  4. 04查看最近或未读邮件
  5. 05读取邮件内容并按日期导出

适用场景

  1. 01按发件人或主题查找邮件
  2. 02检查近期或已标记邮件
  3. 03无需打开 Mail.app 阅读指定邮件
  4. 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。
  • 想要读取特定邮件的内容。

工作原理

  1. 读取 Apple Mail 的 Envelope Index SQLite 数据库,路径为 ~/Library/Mail/V10/MailData/
  2. 将邮件与主题、地址和邮箱表进行联接
  3. 返回匹配邮件的元数据(主题、发件人、日期、邮箱)
  4. 需要时,可从 .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