关于 email-smtp-send
email-smtp-send 是用于通过 SMTP 发送邮件的技能,适合需要脚本化外发邮件的场景。它支持本地文件附件、可选的 IMAP 已发送邮件同步,并以 JSON 输出状态和错误。
主要功能
- 01通过 SMTP 发送邮件
- 02支持本地文件附件
- 03可选同步到 IMAP 已发送邮箱
- 04校验配置并输出 JSON 结果
适用场景
- 01发送带报告附件的邮件
- 02发送邮件并同步到已发送邮箱
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tiangong-ai/ agent-skills --skill email-smtp-send安装后在 Claude Code 中输入/email-smtp-send确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/config.example.envreferences/env.mdscripts/smtp_send.py详细介绍
Email SMTP 发送
核心目标
- 使用环境变量配置的凭据,通过 SMTP 发送邮件。
- 按需将本地文件作为 MIME 邮件内容的附件。
- 可选择将已发送邮件追加到 IMAP 已发送邮箱,以便在不同客户端间查看。
- 在发送前验证 SMTP 和已发送邮件同步配置。
- 返回机器可读的 JSON 状态或错误输出。
工作流
- 配置 SMTP 环境变量(参见
references/env.md和assets/config.example.env)。 - 可选:配置 IMAP 已发送邮件同步环境变量;启用同步时安装
imapclient。 - 验证配置:
python3 scripts/smtp_send.py check-config
- 发送一封邮件:
python3 scripts/smtp_send.py send \
--to [email protected] \
--subject "SMTP test" \
--body "Hello from email-smtp-send"
- 发送邮件并添加附件:
python3 scripts/smtp_send.py send \
--to [email protected] \
--subject "Package delivery" \
--body "See attachments." \
--attach ./report.pdf \
--attach ./appendix.xlsx
- 发送邮件并同步到已发送邮箱:
python3 scripts/smtp_send.py send \
--to [email protected] \
--subject "Synced send" \
--body "This message will be appended to Sent Items." \
--sync-sent \
--sent-mailbox "Sent Items"
输出约定
check-config会输出经过脱敏的 SMTP 配置、默认值和已发送邮件同步配置 JSON。send成功时会输出一个type=statusJSON 对象,其中包含:event=smtp_sent- 发件人、收件人摘要、主题、SMTP 主机/端口
message_idattachment_count和附件元数据attachments[]- 包含
enabled、required、appended以及同步元数据/错误的sent_sync对象
send失败时会将type=errorJSON 输出到 stderr,事件类型为以下之一:event=smtp_send_invalid_argsevent=smtp_send_failedevent=smtp_sent_sync_failed(仅在同步为必需且同步失败时)
参数
send --to:必需的收件人,可重复指定或以逗号分隔。send --cc:可选的抄送收件人。send --bcc:可选的密送收件人。send --subject:可选主题(默认使用环境变量中的值)。send --body:可选正文(默认使用环境变量中的值)。send --content-type:plain或html。send --from:可选的发件人覆盖值。send --attach:可选的本地附件路径,可重复指定或以逗号分隔。send --max-attachment-bytes:每个附件允许的最大字节数。send --message-id:可选的 Message-ID 标头。send --in-reply-to:可选的 In-Reply-To 标头。send --references:可选的 References 标头。send --sync-sent|--no-sync-sent:强制为本次发送启用/禁用 IMAP 已发送邮件同步。send --sent-mailbox:覆盖已发送邮箱。send --sent-flags:以逗号分隔的 IMAP APPEND 标志(默认\Seen)。send --sent-sync-required:如果 SMTP 发送成功但已发送邮件同步失败,则返回非零状态码。
环境变量默认值:
SMTP_HOST、SMTP_PORT、SMTP_SSL、SMTP_STARTTLSSMTP_USERNAME、SMTP_PASSWORD、SMTP_FROM、SMTP_CONNECT_TIMEOUTSMTP_SUBJECT、SMTP_BODY、SMTP_CONTENT_TYPESMTP_MAX_ATTACHMENT_BYTESSMTP_SYNC_SENT、SMTP_SYNC_SENT_REQUIREDSMTP_SENT_IMAP_HOST、SMTP_SENT_IMAP_PORT、SMTP_SENT_IMAP_SSLSMTP_SENT_IMAP_USERNAME、SMTP_SENT_IMAP_PASSWORDSMTP_SENT_IMAP_MAILBOX、SMTP_SENT_IMAP_FLAGS、SMTP_SENT_IMAP_CONNECT_TIMEOUT- 兼容性回退变量:
IMAP_HOST、IMAP_PORT、IMAP_SSL、IMAP_USERNAME、IMAP_PASSWORD、IMAP_CONNECT_TIMEOUT
依赖项
- 已发送邮件同步模式需要
imapclient:
python3 -m pip install imapclient
错误处理
- 环境变量配置无效时,以代码
2退出。 - 发送失败时,以代码
1退出。 - 如果同步为必需(
--sent-sync-required或SMTP_SYNC_SENT_REQUIRED=true),同步失败时以代码1退出。
参考资料
references/env.md
资源文件
assets/config.example.env
脚本
scripts/smtp_send.py
评论
支持 Markdown