名称: apple-mail-search
描述: 通过 SQLite 在 macOS 上快速搜索 Apple Mail。可按主题、发件人、日期、附件搜索邮件,结果约 50 毫秒,而使用 AppleScript 需要 8 分钟以上。当被要求查找、搜索或列出邮件时使用。
主页: https://github.com/steipete/clawdbot
元数据: {"clawdbot":{"emoji":"📬","os":["darwin"],"requires":{"bins":["sqlite3"]}}}
通过 SQLite 即时搜索 Apple Mail.app 邮件。约 50 毫秒,而 AppleScript 需要 8 分钟以上。
# 将 mail-search 复制到你的 PATH 路径下
cp mail-search /usr/local/bin/
chmod +x /usr/local/bin/mail-search
mail-search subject "invoice" # 搜索主题
mail-search sender "@amazon.com" # 按发件人邮箱搜索
mail-search from-name "John" # 按发件人姓名搜索
mail-search to "recipient@example.com" # 搜索已发送邮件
mail-search unread # 列出未读邮件
mail-search attachments # 列出带附件的邮件
mail-search attachment-type pdf # 查找 PDF 附件
mail-search recent 7 # 最近 7 天的邮件
mail-search date-range 2025-01-01 2025-01-31 # 按日期范围搜索
mail-search open 12345 # 按 ID 打开邮件
mail-search stats # 数据库统计信息
-n, --limit N 最大结果数(默认:20)
-j, --json 输出为 JSON 格式
-c, --csv 输出为 CSV 格式
-q, --quiet 不显示表头
--db PATH 覆盖数据库路径
# 查找上个月的银行对账单
mail-search subject "statement" -n 50
# 获取未读邮件为 JSON 格式以便处理
mail-search unread --json | jq '.[] | .subject'
# 查找特定发件人的所有 PDF 文件
mail-search sender "@bankofamerica.com" -n 100 | grep -i statement
# 将近期邮件导出为 CSV
mail-search recent 30 --csv > recent_emails.csv
| 方法 | 处理 13 万封邮件所需时间 |
|---|---|
| AppleScript 迭代 | 8 分钟以上 |
| Spotlight/mdfind | 自 Big Sur 起已失效 |
| SQLite(本工具) | 约 50 毫秒 |
苹果在 macOS Big Sur 中移除了 emlx 文件的 Spotlight 导入器。本工具直接查询 Envelope Index SQLite 数据库。
数据库位置: ~/Library/Mail/V{9,10,11}/MailData/Envelope Index
关键数据表:
- messages - 邮件元数据(日期、标记、外键)
- subjects - 主题行
- addresses - 邮箱地址和显示名称
- recipients - 收件人/抄送人映射
- attachments - 附件文件名
限制:
- 只读(无法撰写或发送邮件)
- 仅限元数据(正文存储在 .emlx 文件中)
- 仅支持 Mail.app(不支持 Outlook 等)
如需自定义查询,可直接使用 sqlite3:
sqlite3 -header -column ~/Library/Mail/V10/MailData/Envelope\ Index "
SELECT m.ROWID, s.subject, a.address
FROM messages m
JOIN subjects s ON m.subject = s.ROWID
LEFT JOIN addresses a ON m.sender = a.ROWID
WHERE s.subject LIKE '%your query%'
ORDER BY m.date_sent DESC
LIMIT 20;
"
MIT