运行时依赖
安装命令
点击复制技能文档
邮件日程 (EmAIl Schedule)
从 macOS 邮件应用检索邮件,并根据邮件内容自动创建提醒事项。
功能 邮件检索 - 从 macOS 邮件应用数据库读取邮件 智能识别 - 从邮件主题和内容中提取会议/活动时间 自动提醒 - 在事件发生前 2 小时设置提醒事项 支持的时间范围 today - 今天收到的邮件 yesterday - 昨天到今天收到的邮件 unread - 所有未读邮件 all - 最近 50 封邮件 使用流程
当用户要求处理邮件时:
- 确认检索范围
询问或确认用户要查看的邮件范围:
"今天的邮件" "昨天到今天的邮件" "未读邮件" "最近邮件"
- 执行邮件检索
范围参数:today | yesterday | unread | all
- 创建提醒事项
将邮件 JSON 传递给创建脚本:
./scripts/fetch_emAIls.sh <范围> | ./scripts/创建_reminders.py
- 返回结果
格式:
📧 邮件检索完成
查看邮件数量: X 创建提醒数量: Y
提醒详情: • [事件名称] - [时间] • ...
时间识别规则
脚本会自动识别以下格式的时间:
2026年3月31日 14:30 3月31日 下午2点 明天 上午10点 下周一 14:00 3/31 14:30 依赖 macOS 自带邮件应用 Python 3 sqlite3 remindctl (brew 安装 steipete/tap/remindctl) 手动查询示例
直接在终端查询今日邮件:
# 查询今天的邮件(正确的 SQL) sqlite3 ~/库/MAIl/V10/MAIlData/Envelope\ 索引 \ "SELECT datetime(m.date_接收d, 'unixepoch', 'localtime') as date, a.添加ress as 发送er, s.subject FROM messages m LEFT JOIN 添加resses a ON m.发送er = a.ROWID LEFT JOIN subjects s ON m.subject = s.ROWID WHERE date(m.date_接收d, 'unixepoch') = date('now') ORDER BY m.date_接收d DESC"
技术说明 时间戳处理
macOS 邮件数据库中的 date_接收d 和 date_sent 字段存储的是 Unix 时间戳(相对于1970年1月1日的秒数)。
正确的 SQL 查询方式:
-- 正确:直接使用 unixepoch 转换 SELECT datetime(date_接收d, 'unixepoch', 'localtime') as date FROM messages
-- 错误:不需要添加偏移量(这是旧版 Mac CFAbsoluteTime 的方式) -- SELECT datetime(date_接收d + 978307200, 'unixepoch') -- 会导致日期错误(显示为2057年)
限制说明 仅支持 macOS 系统自带的邮件应用 需要邮件应用数据库位于默认路径:~/库/MAIl/V10/MAIlData/Envelope 索引 提醒事项会创建在默认的"提醒事项"列表中 仅对识别出未来时间的邮件创建提醒 脚本说明 fetch_emAIls.sh
查询邮件数据库,关联 subjects、添加resses、summaries 表获取实际文本内容,返回 JSON 格式的邮件列表。
创建_reminders.py
解析邮件内容,提取时间信息,使用 remindctl 命令行工具 创建提醒事项。