用途:在 macOS 上不启动 Mail.app 即可快速搜索 Apple Mail 邮件,适用于按主题、发件人或日期查找邮件、列出账户与邮箱、读取指定邮件内容等场景。
主要能力:直接读取 ~/Library/Mail/V10/MailData/ 下的 Envelope Index SQLite 数据库,关联 messages、subjects、addresses、mailboxes、summaries 等表,返回主题、发件人、日期、邮箱等元数据;需要时可从 .emlx 文件读取完整邮件内容。数据库由 Mail.app 实时写入,因此结果保持最新。
使用方式:命令行工具 mail-search,提供 accounts(列出账户)、mailboxes(列出邮箱)、search(按条件搜索)、recent(最近邮件)、read(按 ID 读全文)、dump(导出某日全部邮件)等命令。搜索支持 --subject、--sender、--body、--account、--mailbox、--after、--before、--limit、--unread、--flagged 等参数,例如:mail-search search --subject "invoice"、mail-search recent --limit 20、mail-search read --id 329402。输出含邮件 ID、时间、发件人、主题和账户/邮箱路径。
限制:正文搜索基于 summaries 表(邮件预览片段),不是全文;需全文时用 read --id。附件不可搜索;已删除邮件在彻底删除前可能仍出现。需先至少打开过一次 Apple Mail,否则报数据库未找到;数据库被锁定时可稍后重试;部分 IMAP 邮件可能未完整下载。附带说明其为只读访问、无网络请求、数据不离开本机。性能方面官方称列出账户小于 0.1 秒、搜索小于 0.3 秒、读取内容小于 0.2 秒。