Install
openclaw skills install @thcjp/email-toolkitopenclaw skills install @thcjp/email-toolkit功能说明: 本技能涵盖 化工作流场景 等核心能力。
基于SMTP协议的邮件发送自动化Skill,围绕"配置-校验-投递-追踪"四个环节提供端到端的发信能力.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Email处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| EmailSMTP邮件发送 | 不支持 | 支持 |
| 深度质量检查与CVE关联 | 不支持 | 支持 |
| 配置基线合规审计 | 不支持 | 支持 |
| 批量资产风险评分 | 不支持 | 支持 |
| 情报分析实时订阅与告警 | 不支持 | 支持 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
详细的输入输出格式请参考下方章节说明。
在工作目录创建email_config.json:
{
"smtp_server": "smtp.gmail.com",
"smtp_port": 587,
"username": "your-email@gmail.com",
"password": "your-app-password",
"sender_name": "自动化助手",
"use_tls": true,
"use_ssl": false
}
Gmail禁止直接使用账号登录密码,必须使用应用专用密码:
https://myaccount.google.com/security,进入"应用密码".password字段.export SMTP_SERVER=smtp.gmail.com
export SMTP_PORT=587
export EMAIL_USERNAME=your-email@gmail.com
export EMAIL_PASSWORD=your-app-password
export EMAIL_SENDER_NAME="自动化助手"
daily_report.xlsx与收件人列表team@company.com.message_id用于追踪.[P0]/[P1]),正文以红色高亮关键指标,投递至值班工程师邮箱.python email_sender.py \
--to "pm@company.com" \
--cc "dev-leads@company.com" \
--subject "[周报] 后端服务第28周交付总结" \
--body "附件为本周交付物与缺陷清单,请于周五前确认。" \
--attachment "weekly_summary.pdf" \
--attachment "defects.xlsx"
执行成功输出:
Email sent successfully
Message-ID: <1894a3b2...@smtp.gmail.com>
Attachments: 2
Recipients: 2 (1 to + 1 cc)
先将HTML正文写入文件release_notice.html:
<h2 style="color:#1a73e8;">v2.4.0 已发布</h2>
<p>本次发布包含以下改进:</p>
<ul><li>搜索响应速度提升 35%</li><li>新增批量导出能力</li></ul>
随后投递:
python email_sender.py \
--to "all-staff@company.com" \
--subject "[发布通知] v2.4.0" \
--html-file "release_notice.html"
from email_sender import EmailSender
# ...
sender = EmailSender("email_config.json")
result = sender.send_email(
to_email="data-ops@company.com",
subject="ETL 任务失败告警",
body="task_id=etl_user_dim, duration=1800s, error=connection_timeout",
attachments=["/opt/airflow/logs/etl_user_dim.log"]
)
if not result["success"]:
raise RuntimeError(f"告警邮件投递失败: {result['error']}")
smtplib.SMTPAuthenticationError: 535 Username and Password not accepted.email_config.json或环境变量后重投.smtplib.SMTPConnectError: Connection refused或socket.timeout.use_ssl=true、use_tls=false;若仍失败,改用服务商提供的API投递通道(如Gmail API).smtplib.SMTPDataError: 552 Message size exceeds fixed limit.ValueError: Invalid recipient format: user@.--to参数中存在缺失域名或非法字符的邮箱字符串.^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$校验,剔除空项与重复项后.=?utf-8?b?...?=未解码或???.email.header.Header(subject, 'utf-8').encode()构造主题,确保多语言字符正确显示.SMTPSenderRefused: 550 5.4.5 Daily user sending quota exceeded.ssl.SSLError: [SSL: WRONG_VERSION_NUMBER].smtp_port与use_tls/use_ssl组合(587配合TLS,465配合SSL),必要时升级Python至3.8以上以支持现代TLS 1.2.FileNotFoundError: email_config.json.EmailSender("/etc/secrets/email_config.json"),或改用环境变量注入,避免依赖相对路径.不支持。本Skill专注于SMTP发信链路,接收侧请使用imap-tools或服务商API单独实现,避免与发信凭据混用.
受服务商总大小限制(Gmail/Outlook为25MB,QQ邮箱为50MB)。附件数量无硬上限,但建议单邮件不超过10个以保证客户端渲染体验.
可以。在email_config.json中新增proxy_host与proxy_port字段,SMTP连接将通过SOCKS5代理转发,适用于内网隔离环境.
Outlook使用Word渲染引擎,不支持flex、grid、border-radius等现代CSS。建议使用表格布局与内联样式,避免外部CSS引入.
配置SPF、DKIM、DMARC三条DNS记录;使用固定发信域名;正文避免全图片、敏感词与超额链接;逐步预热发信IP而非突发大批量投递.
在email_config.json中以accounts数组提供多组凭据,SDK内部按权重轮询并在单账号触发RATE_006时自动切换至下一个账号.
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 邮件发送 | 5分钟/封 | 10秒/封 | 4分50秒/封 | 100% |
| 邮件批量发送 | 30分钟/100封 | 1分钟/100封 | 29分钟 | 100% |
| 邮件格式调整 | 10分钟/封 | 5秒/封 | 9分55秒/封 | 100% |
| 邮件附件添加 | 5分钟/封 | 3秒/封 | 4分57秒/封 | 100% |
| 邮件内容校验 | 10分钟/封 | 5秒/封 | 9分55秒/封 | 100% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 适配性 | 支持多供应商,自动协商TLS/SSL | 逐个配置,手动协商 | 需要编写代码,配置复杂 | 需要购买,配置复杂 |
| 内容模式 | 纯文本与HTML双模式 | 单一模式,需手动转换 | 可自定义,但需要编程能力 | 功能丰富,但成本高 |
| 附件处理 | 多附件并行投递 | 逐个上传,效率低 | 可并行处理,但需要编程能力 | 功能丰富,但成本高 |
| 收件人编排 | 支持CC/BCC | 手动添加,易出错 | 可自定义,但需要编程能力 | 功能丰富,但成本高 |
| 凭据管理 | 支持凭据双通道 | 手动输入,易泄露 | 可自定义,但需要编程能力 | 功能丰富,但成本高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 邮件发送效率低 | 邮件发送需要手动操作,耗时较长 | 影响工作效率 | 自动化邮件发送,提高效率 | 时间节约90% |
| 邮件格式不统一 | 邮件格式调整需要手动操作,易出错 | 影响邮件效果 | 自动化格式调整,提高准确率 | 准确率提升100% |
| 邮件附件处理复杂 | 邮件附件添加需要手动操作,效率低 | 影响邮件完整性 | 自动化附件处理,提高效率 | 效率提升80% |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |