SuperAPI AI 工具集

apple-mail-search

办公与效率

查看项目

更新于 10-16 07:00

技能介绍

Apple Mail Search 是一个面向 macOS 的命令行邮件搜索工具,通过直接查询 Apple Mail.app 的 Envelope Index SQLite 数据库来检索邮件,从而绕过 AppleScript 逐条遍历的低效方式。据资料说明,在 13 万封邮件规模下,AppleScript 迭代需要 8 分钟以上,而该工具约 50 毫秒即可返回结果。

用途 该工具用于在 macOS 上快速搜索 Apple Mail.app 中的邮件。由于 macOS Big Sur 移除了 emlx 的 Spotlight 导入器,Spotlight/mdfind 方式已失效,因此该工具改为直接查询 Envelope Index SQLite 数据库。

主要能力 支持多种检索维度:按主题(subject)、发件人邮箱(sender)、发件人名称(from-name)、收件人(to)、未读邮件(unread)、含附件邮件(attachments)、附件类型(attachment-type,如 pdf)、最近若干天(recent)、日期范围(date-range)进行搜索;还可按 ID 打开邮件(open)以及查看数据库统计(stats)。

使用方式 安装:将 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 mail-search recent 7 mail-search date-range 2025-01-01 2025-01-31 mail-search open 12345 mail-search stats

选项: -n, --limit N 最大结果数(默认 20) -j, --json 以 JSON 输出 -c, --csv 以 CSV 输出 -q, --quiet 不显示表头 --db PATH 覆盖数据库路径

示例: mail-search subject "statement" -n 50 mail-search unread --json | jq '.[] | .subject' mail-search sender "@bankofamerica.com" -n 100 | grep -i statement mail-search recent 30 --csv > recent_emails.csv

技术细节 数据库路径:~/Library/Mail/V{9,10,11}/MailData/Envelope Index 关键表:messages(邮件元数据,含日期、标志、外键)、subjects(主题行)、addresses(邮箱地址与显示名称)、recipients(TO/CC 映射)、attachments(附件文件名)。

高级用法:可直接使用 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; "

适用场景 适合需要在 macOS 上快速检索大量 Apple Mail 邮件的用户,例如查找特定主题的账单、按发件人筛选邮件、导出近期邮件为 CSV、以 JSON 输出供后续处理等。

限制 只读,无法撰写或发送邮件;仅查询元数据,邮件正文存放在 .emlx 文件中;仅适用于 Apple Mail.app,不支持 Outlook 等其他客户端。

许可 MIT。