关于 apple-mail
apple-mail 是通过 AppleScript 操作 macOS 上 Apple Mail 的技能,适用于需要命令行处理邮件的场景。它涵盖邮件读取、搜索、撰写、发送及整理。
主要功能
- 01列出账户和邮箱
- 02读取并搜索邮件
- 03发送邮件和创建草稿
- 04撰写邮件回复
- 05归档、删除及标记邮件
适用场景
- 01查看邮箱中的未读邮件
- 02搜索特定邮件
- 03撰写或发送回复
- 04归档邮件或标记为已读
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rbouschery/ marketplace --skill apple-mail安装后在 Claude Code 中输入/apple-mail确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/applescript-patterns.mdscripts/archive-email.shcreate-draft.shcreate-reply-draft.shdelete-email.shget-email-by-id.shget-emails.shget-unread-count.shlist-accounts.shlist-mailboxes.shmark-read.shmark-unread.shsearch-emails.shsend-draft.shsend-email.sh详细介绍
Apple Mail 技能
此技能通过 AppleScript 提供在 macOS 上与 Apple Mail 交互的命令。
可用脚本
所有脚本都位于 ../../scripts/ 目录中(相对于此文件)。请从插件根目录通过 bash 执行这些脚本。
账户和邮箱管理
| 脚本 | 用途 | 参数 |
|---|---|---|
list-accounts.sh | 列出所有电子邮件账户 | 无 |
list-mailboxes.sh | 列出邮箱/文件夹 | [account](可选) |
get-unread-count.sh | 获取未读邮件数量 | [account] [mailbox](可选) |
阅读邮件
| 脚本 | 用途 | 参数 |
|---|---|---|
get-emails.sh | 获取近期邮件 | [account] [mailbox] [limit] [include_content] [unread_only] |
get-email-by-id.sh | 按 ID 获取指定邮件 | <id> [account] [mailbox] [include_content] |
search-emails.sh | 搜索邮件 | <query> [account] [mailbox] [limit] |
发送和撰写
| 脚本 | 用途 | 参数 |
|---|---|---|
send-email.sh | 发送邮件 | <to> <subject> <body> [cc] [bcc] [from] |
create-draft.sh | 创建邮件草稿 | <subject> <body> [to] [cc] [bcc] [from] |
create-reply-draft.sh | 创建邮件回复 | <message_id> <body> [reply_all] [account] [mailbox] |
send-draft.sh | 发送最前面的草稿 | 无 |
邮件管理
| 脚本 | 用途 | 参数 |
|---|---|---|
archive-email.sh | 归档邮件 | <message_id> [account] [mailbox] [archive_mailbox] |
delete-email.sh | 删除邮件 | <message_id> [account] [mailbox] |
mark-read.sh | 将邮件标记为已读 | <message_id> [account] [mailbox] |
mark-unread.sh | 将邮件标记为未读 | <message_id> [account] [mailbox] |
输出格式
脚本使用分隔符输出结构化数据:
<<>>分隔一条记录中的字段|||分隔多条记录ERROR:前缀表示错误消息
邮件记录格式
id<<>>subject<<>>sender<<>>to<<>>cc<<>>bcc<<>>dateSent<<>>isRead<<>>content|||
使用示例
列出账户
./scripts/list-accounts.sh
获取 INBOX 中的近期邮件
./scripts/get-emails.sh "" "INBOX" 10 false false
获取包含正文的近期未读邮件
./scripts/get-emails.sh "" "INBOX" 10 true true
按 ID 获取指定邮件
./scripts/get-email-by-id.sh 12345 "iCloud" "INBOX" true
搜索邮件
./scripts/search-emails.sh "meeting notes" "" "" 20
发送邮件
./scripts/send-email.sh "[email protected]" "Subject" "Body text"
发送邮件并添加 CC 和 BCC
./scripts/send-email.sh "[email protected]" "Subject" "Body" "[email protected]" "[email protected]"
创建草稿
./scripts/create-draft.sh "Draft Subject" "Draft body" "[email protected]"
回复邮件
./scripts/create-reply-draft.sh 12345 "Thanks for your message!" false "iCloud" "INBOX"
发送最前面的草稿
./scripts/send-draft.sh
归档邮件
./scripts/archive-email.sh 12345 "iCloud" "INBOX"
标记为已读/未读
./scripts/mark-read.sh 12345 "iCloud" "INBOX"
./scripts/mark-unread.sh 12345 "iCloud" "INBOX"
解析输出
收到邮件记录时,请按以下方式解析:
- 按
|||拆分,获取各条记录 - 按
<<>>拆分每条记录,获取字段 - 字段依次为:id、subject、sender、to、cc、bcc、dateSent、isRead、content
bash 解析示例:
IFS='|||' read -ra emails <<< "$output"
for email in "${emails[@]}"; do
IFS='<<>>' read -ra fields <<< "$email"
id="${fields[0]}"
subject="${fields[1]}"
sender="${fields[2]}"
# ... etc
done
注意事项
- 脚本需要运行 macOS,并配置好 Apple Mail
- Apple Mail 中必须至少设置一个账户
- 首次运行可能会触发 macOS 自动化权限提示
- 可选参数为空时,请传递空字符串 ""
- 需要数组(多个收件人)的脚本,请传递以逗号分隔的值
参考
如需了解高级 AppleScript 模式和自定义方法,请参阅 ./reference/applescript-patterns.md。
评论
支持 Markdown