网淘吧来吧,欢迎您!

Apple Mail Search技能使用说明

2026-03-29 新闻来源:网淘吧 围观:19
电脑广告
手机广告

Apple Mail 搜索

通过 SQLite 即时搜索 Apple Mail.app 的邮件。相比使用 AppleScript 的 8 分钟以上,仅需约 50 毫秒。

安装

# Copy mail-search to your PATH
cp mail-search /usr/local/bin/
chmod +x /usr/local/bin/mail-search

使用方法

mail-search subject "invoice"           # Search subjects
mail-search sender "@amazon.com"        # Search by sender email
mail-search from-name "John"            # Search by sender name
mail-search to "recipient@example.com"  # Search sent mail
mail-search unread                      # List unread emails
mail-search attachments                 # List emails with attachments
mail-search attachment-type pdf         # Find PDFs
mail-search recent 7                    # Last 7 days
mail-search date-range 2025-01-01 2025-01-31
mail-search open 12345                  # Open email by ID
mail-search stats                       # Database statistics

选项

-n, --limit N    Max results (default: 20)
-j, --json       Output as JSON
-c, --csv        Output as CSV
-q, --quiet      No headers
--db PATH        Override database path

示例

# Find bank statements from last month
mail-search subject "statement" -n 50

# Get unread emails as JSON for processing
mail-search unread --json | jq '.[] | .subject'

# Find all PDFs from a specific sender
mail-search sender "@bankofamerica.com" -n 100 | grep -i statement

# Export recent emails to CSV
mail-search recent 30 --csv > recent_emails.csv

为什么需要这个工具

方法处理 13 万封邮件所需时间
AppleScript 迭代8 分钟以上
Spotlight / mdfind自 Big Sur 起已失效
SQLite(本工具)约 50 毫秒

苹果在 macOS Big Sur 中移除了 emlx 文件的 Spotlight 导入器。此工具直接查询信封索引SQLite 数据库。

Apple Mail Search

技术细节

数据库: ~/Library/Mail/V{9,10,11}/MailData/Envelope Index

关键数据表:

  • messages- 邮件元数据(日期、标记、外键)
  • 主题- 主题行
  • 地址- 电子邮件地址与显示名称
  • 收件人- 收件人/抄送映射关系
  • 附件- 附件文件名

限制:

  • 仅限读取(无法撰写/发送)
  • 仅限元数据(正文内容位于.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协议

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第326345名访客 今日有221篇新文章/评论