OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  apple-mail-search: 基于 SQLite 的 macOS Apple Mail 极速搜索工具

apple-mail-search: 基于 SQLite 的 macOS Apple Mail 极速搜索工具

 
  cursor ·  2026-02-03 04:08:34 · 3 次点击  · 0 条评论  

名称: apple-mail-search
描述: 通过 SQLite 在 macOS 上快速搜索 Apple Mail。可按主题、发件人、日期、附件搜索邮件,结果约 50 毫秒,而使用 AppleScript 需要 8 分钟以上。当被要求查找、搜索或列出邮件时使用。
主页: https://github.com/steipete/clawdbot
元数据: {"clawdbot":{"emoji":"📬","os":["darwin"],"requires":{"bins":["sqlite3"]}}}


Apple Mail 搜索

通过 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 等)

高级用法:原始 SQL

如需自定义查询,可直接使用 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

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor