SKILL.md
只读
名称
email-smtp-send
描述
通过SMTP发送电子邮件,可附带本地附件,并可选择通过IMAP APPEND同步到已发送邮箱。适用于需要可靠外发邮件、发送附件、检查SMTP连接或实现跨客户端已发送邮件可见性的任务(例如在SMTP发送后将邮件追加到“已发送邮件”文件夹)。
Email SMTP Send
核心目标
- 通过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 recipient@example.com \
--subject "SMTP test" \
--body "Hello from email-smtp-send"
- 发送带附件的邮件:
python3 scripts/smtp_send.py send \
--to recipient@example.com \
--subject "Package delivery" \
--body "See attachments." \
--attach ./report.pdf \
--attach ./appendix.xlsx
- 发送并同步到已发送邮箱:
python3 scripts/smtp_send.py send \
--to recipient@example.com \
--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[]元数据sent_sync对象,包含enabled、required、appended以及同步元数据/错误
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






