2.5 KiB
2.5 KiB
AgentMail 发送邮件工作流(配合 blogwatcher-daily 等导出技能)
从 blogwatcher-daily 的 SKILL.md 中拆出,因为「AgentMail 发信」是独立于「RSS 抓取导出」的能力。任何需要先导出再发邮件的场景都可复用。
前置条件
agentmailCLI 已安装(/opt/homebrew/bin/agentmail)- API key 在
~/.zshrc的AGENTMAIL_API_KEY里(当前 Hermes shell 不会自动加载 .zshrc,需手动 source 或提取) - 出站网络需要走代理:
ALL_PROXY=socks5://127.0.0.1:10808(否则 agentmail API 返回 403 被 CloudFront 拦截)
标准发送流程
# 1) 提取 API key + 设置代理(每次新 shell 都要做)
export AGENTMAIL_API_KEY=$(grep '^export AGENTMAIL_API_KEY=' ~/.zshrc | sed 's/.*="\(.*\)"/\1/')
export ALL_PROXY=socks5://127.0.0.1:10808
export HTTP_PROXY=http://127.0.0.1:10808
export HTTPS_PROXY=http://127.0.0.1:10808
# 2) 列出 inbox 拿 inbox_id(首次;一般是 star-agent@agentmail.to)
agentmail inboxes list
# 3) 发送(--html 直接读 HTML 内容字符串)
agentmail inboxes messages send \
--inbox-id "star-agent@agentmail.to" \
--to "billyshen@163.com" \
--subject "主题" \
--html "$(cat /tmp/file.html)"
返回 JSON:
{
"message_id": "<...>@email.amazonses.com",
"thread_id": "..."
}
常见陷阱
1. 403 "Request blocked"
- 没走代理。CloudFront 拦了直连 IP。
- 修复:export 上面 3 个 PROXY 环境变量后重试。
2. 401 "credentials are missing"
- 当前 shell 没加载 .zshrc,
AGENTMAIL_API_KEY不在环境里。 - 修复:用上面的
export $(grep ...)提取。
3. HTML 太长
--html "$(cat file)"把整个文件塞进命令行参数。对很大的 HTML(>500KB)可能撞到 ARG_MAX。- 应对:先压缩 HTML(去掉 base64 图片、压缩 CSS),或者改用
--json @payload.json走 stdin。
与 blogwatcher-daily 配合的固定模式
# 导出 → 发邮件
python3 ~/.hermes/skills/custom/blogwatcher-daily/scripts/blogwatcher-daily.py \
--export html --date 2026-08-30 > /tmp/digest.html
agentmail inboxes messages send \
--inbox-id "star-agent@agentmail.to" \
--to "billyshen@163.com" \
--subject "Blogwatcher Daily Digest $(date +%Y-%m-%d)" \
--html "$(cat /tmp/digest.html)"
当前用户的 inbox
star-agent@agentmail.to(默认发件箱)
已发送示例
- Blogwatcher 每日摘要 → billyshen@163.com
- 单订阅文章打包(异次元软件世界、惫懒の欧阳川)→ billyshen@163.com