← 返回 Skills 市场
batch-send-mail
作者
wangyifeng6
· GitHub ↗
· v1.0.1
· MIT-0
113
总下载
1
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install batch-send-mail
功能描述
批量发送个性化邮件技能。读取表格(CSV/Excel)中的邮箱列表和变量,替换邮件模板中的占位符后批量发送邮件。支持 HTML 格式、通用附件、SMTP 配置和干运行预览模式。当用户需要批量发送个性化邮件、邮件营销、通知邮件时触发,即使他们说"批量发邮件"、"群发邮件"、"批量发送邮件"也要使用此技能。
使用说明 (SKILL.md)
batch-send-mail
批量发送个性化邮件技能。根据表格数据批量发送带有个性化变量替换的邮件。
功能特点
- 支持多种表格格式:CSV 和 Excel (.xlsx/.xls)
- 灵活的变量替换:第一列为邮箱,后续列依次对应模板中的 {variable1}, {variable2}, ...
- HTML 支持:支持发送 HTML 格式的富文本邮件
- 通用附件:支持给所有邮件添加相同的附件文件
- 干运行模式:可先预览替换结果,确认无误后再实际发送
- 自动保存配置:首次使用交互式输入 SMTP 配置,自动保存,后续无需重复输入
- 可配置 SMTP:支持配置 SMTP 服务器(支持 Gmail、Outlook、QQ、163 等常见邮箱)
使用场景
- 批量发送会议邀请
- 个性化邮件营销
- 给客户发送通知
- 课程作业邮件通知
- 活动邀请函批量发送
工作流程
用户提供 → 表格文件 + 邮件模板 + SMTP配置
↓
技能读取表格数据
↓
逐个替换模板变量
↓
干运行模式:输出预览,不发送
实际发送:连接SMTP,批量发送
↓
发送完成报告统计
输入格式
1. 表格文件
| 收件邮箱 | 抄送邮箱 | variable1 | variable2 |
|---|---|---|---|
| [email protected] | [email protected]|[email protected] | Alice | 产品A |
| [email protected] | Bob | 产品B |
- 第一列:收件邮箱地址(必填)
- 第二列:抄送邮箱地址,多个邮箱用
|分隔,留空表示不抄送 - 第三列:替换模板中的
{variable1} - 第四列:替换模板中的
{variable2} - 以此类推...
2. 邮件模板
邮件模板使用 {variable1}, {variable2}, ... 作为占位符:
您好 {variable1}!
感谢您购买我们的 {variable2}。
如果您有任何问题,请随时联系我们。
此致,
团队
3. SMTP 配置
需要提供以下信息:
- SMTP 服务器地址(如
smtp.gmail.com,smtp.qq.com) - SMTP 端口(通常 587 用于 TLS,465 用于 SSL)
- 发件人邮箱
- 授权码/密码
常见 SMTP 配置参考
| 邮箱 | SMTP 服务器 | 端口 | 备注 |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | 需要应用专用密码 |
| Outlook/Office365 | smtp.office365.com | 587 | |
| QQ邮箱 | smtp.qq.com | 587 | 使用授权码而非密码 |
| 163邮箱 | smtp.163.com | 587 | 使用授权码而非密码 |
使用说明
-
准备文件
- 准备好表格文件(CSV 或 Excel)
- 准备好邮件模板(文本或 HTML)
-
配置信息
- 提供邮件主题(固定)
- 提供 SMTP 配置信息
- 可选:添加通用附件文件路径
-
干运行预览
- 先使用干运行模式生成预览
- 检查变量替换是否正确
-
发送邮件
- 确认预览无误后,执行实际发送
- 等待发送完成,查看发送报告
示例
参见 examples/ 目录:
example_contacts.csv- 示例联系人表格example_template.txt- 示例邮件模板
执行脚本
主脚本位于 scripts/batch_send_mail.py
命令行用法
首次使用(自动交互式配置):
python scripts/batch_send_mail.py \
--table contacts.csv \
--template email_template.txt \
--subject "您的订阅已确认" \
--dry-run
按提示输入 SMTP 配置后,配置会自动保存到 config/config.ini,后续使用无需再输入 SMTP 信息:
python scripts/batch_send_mail.py \
--table contacts.csv \
--template email_template.txt \
--subject "您的订阅已确认" \
--dry-run
参数说明:
--table- 表格文件路径 (CSV 或 .xlsx)--template- 邮件模板文件路径--subject- 邮件主题--smtp-server- SMTP 服务器地址(可选,覆盖配置文件)--smtp-port- SMTP 端口(可选,覆盖配置文件,默认: 587)--sender-email- 发件人邮箱(可选,覆盖配置文件)--sender-password- 发件人密码/授权码(可选,覆盖配置文件)--attachments- 可选,通用附件文件路径,多个用空格分隔--dry-run- 干运行模式,只预览不发送--html- 标记模板为 HTML 格式(默认是纯文本)--show-config- 显示当前配置并退出
配置文件
配置文件保存在 config/config.ini,格式如下:
[smtp]
server = smtp.qq.com
port = 587
sender_email = [email protected]
sender_password = your-auth-code-or-password
你可以直接编辑这个文件修改配置。
变量替换规则
- 第一列:收件邮箱
- 第二列:抄送邮箱(多个用
|分隔) - 第三列:替换模板中的
{variable1} - 第四列:替换模板中的
{variable2} - 以此类推...
- 你也可以使用
{v1},{v2}...作为简写 - 如果模板中变量数量多于表格变量列数,缺失的变量会被替换为空字符串
- 如果表格变量列数多于模板变量数量,多余列会被忽略
安全使用建议
该技能本身与“批量发送个性化邮件”的目的相符,但在安装/使用前请注意以下几点:
- 凭据存储:首次运行会把 SMTP 邮箱和密码/授权码以明文写入 config/config.ini(项目目录下)。如果机器是共享的或受管理,敏感凭据可能被他人读取。建议在保存后对该文件设置严格权限(例如 chmod 600),或在不信任环境下避免保存。
- 命令行密码泄露:脚本同时支持 --sender-password,这会使密码在某些系统的进程列表中可见;尽量不要通过命令行传递明文密码,优先使用交互式输入或其它更安全的凭据传递方式。
- 使用专用授权码:对 Gmail/QQ/163 等邮箱,请使用应用专用密码或授权码,避免使用主密码。定期撤销不再需要的授权码。
- 附件与本地文件访问:脚本会读取并附加任意由你指定的文件路径。不要附加包含敏感信息或系统凭证的文件。
- 先做干运行(--dry-run):在发送前用提供的示例和 dry-run 模式验证变量替换与邮件格式,避免误发。
- 自动触发风险:平台允许技能被代理自主调用。若担心代理在未经你明确确认的情况下发送邮件,考虑禁用技能的自动调用或仅在手动触发下使用。
如果你接受上述风险,按说明使用并采取文件权限与凭据管理的最佳实践即可。若需要更强的安全性,考虑改为通过更安全的凭据存储(例如系统密钥链、受限环境变量或外部邮件 API 的 OAuth)来管理 SMTP 授权。
功能分析
Type: OpenClaw Skill
Name: batch-send-mail
Version: 1.0.1
The skill is designed for bulk email sending with template variable substitution, but it is classified as suspicious because it stores sensitive SMTP credentials (including passwords or authorization codes) in plain text within a local configuration file (`config/config.ini`). While the script's logic in `scripts/batch_send_mail.py` appears aligned with its stated purpose and lacks evidence of intentional malice or data exfiltration, the insecure storage of credentials represents a significant security vulnerability.
能力评估
Purpose & Capability
技能名称与描述(从表格读取联系人、替换模板变量、通过 SMTP 发送邮件)与实际代码和 SKILL.md 中的要求一致。所列依赖(pandas、openpyxl)与读取 CSV/Excel 的功能相符。没有要求与邮件发送无关的云凭据、外部 API key 或非必要二进制。
Instruction Scope
SKILL.md 和脚本明确限定为读取表格、模板、可选附件并通过用户提供的 SMTP 服务器发送邮件。说明会在首次运行时交互式请求 SMTP 信息并保存到本地配置文件,脚本可做干运行(preview)。注意:脚本会读取任意由用户指定的附件文件路径并将其附加到邮件,这在功能上合理但会访问本地文件系统中任意路径(以用户权限),应谨慎指定。
Install Mechanism
这是 instruction-only(含一个 Python 脚本)且没有安装脚本。依赖通过 requirements.txt 指定(pandas、openpyxl),这些与功能相称且来自常见 Python 包。没有看到不受信任的远程二进制下载或可疑安装步骤。
Credentials
技能不需要平台环境变量或外部凭据声明,但实现会将 SMTP 凭据以明文形式保存到项目下的 config/config.ini;并且接受 --sender-password 命令行参数(在某些系统上会在进程列表中暴露)。保存明文密码和通过命令行传递敏感凭据是隐私/安全风险,尤其在共享或受管理的主机上。
Persistence & Privilege
技能不会要求 'always: true' 或修改其他技能/系统的配置。然而它会在首次运行时在 repo 根目录下创建并保存 config/config.ini(持久化用户 SMTP 凭据),这是预期行为但具有持久性影响。技能默认允许模型自主调用(平台默认),这意味着如果被代理自动触发可能会执行发送流程;与凭据持久化结合时会扩大误用风险,建议在高敏感环境中注意该行为。
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install batch-send-mail - 安装完成后,直接呼叫该 Skill 的名称或使用
/batch-send-mail触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.1
**Version 1.0.1 adds CC (抄送) address support:**
- 新增第二列表格字段为“抄送邮箱”,支持多个抄送邮箱以 `|` 分隔,留空为不抄送
- 文档示例及说明同步更新,强调抄送邮箱的使用方式
- 变量替换和输入格式说明根据新规则调整,保证兼容性和使用直观性
v1.0.0
提供csv或excel表和内容模板,批量发送邮件给表格里面的邮箱,第一列是邮箱名,其他列是模板要替换的内容变量
元数据
常见问题
batch-send-mail 是什么?
批量发送个性化邮件技能。读取表格(CSV/Excel)中的邮箱列表和变量,替换邮件模板中的占位符后批量发送邮件。支持 HTML 格式、通用附件、SMTP 配置和干运行预览模式。当用户需要批量发送个性化邮件、邮件营销、通知邮件时触发,即使他们说"批量发邮件"、"群发邮件"、"批量发送邮件"也要使用此技能。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 113 次。
如何安装 batch-send-mail?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install batch-send-mail」即可一键安装,无需额外配置。
batch-send-mail 是免费的吗?
是的,batch-send-mail 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
batch-send-mail 支持哪些平台?
batch-send-mail 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 batch-send-mail?
由 wangyifeng6(@wangyifeng6)开发并维护,当前版本 v1.0.1。
推荐 Skills