企业邮件自动化与批量发送方案,支持模板与定时调度
邮件工具箱专业版是一项面向实际任务的技能,主要用于批量发送引擎;收件人列表 : 支持 CSV/JSON 收件人列表文件;
发送日志 : 完整记录发送结果;输入 : 用户提供批量发送引擎所需的指令和必要参数;邮件模板系统;内置模板 : 通知、报告、邀请、提醒、审批等常。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
(根据实际场景填充)、(根据实际场景填充) 等变量插值输入: 用户提供批量发送引擎所需的指令和必要参数。
(根据实际场景填充) 语法输入: 用户提供邮件模板系统所需的指令和必要参数。 处理: 按照skill规范执行邮件模板系统操作,遵循单一意图原则。### 定时调度
输入: 用户提供定时调度所需的指令和必要参数。 输出: 返回定时调度的执行结果,包含操作状态和输出数据。### 多服务商负载均衡
输入: 用户提供多服务商负载均衡所需的指令和必要参数。 输出: 返回多服务商负载均衡的执行结果,包含操作状态和输出数据。### 发送队列与重试
输入: 用户提供发送队列与重试所需的指令和必要参数。 输出: 返回发送队列与重试的执行结果,包含操作状态和输出数据。### 退信处理
输入: 用户提供退信处理所需的指令和必要参数。 输出: 返回退信处理的执行结果,包含操作状态和输出数据。### 分析报告
执行收件人列表操作,处理用户输入并返回结果。
输入: 用户提供收件人列表所需的参数和指令。
输出: 返回收件人列表的处理结果。
收件人列表操作,处理输入数据并返回结果收件人列表相关配置参数进行设置| 组件 | 说明 | 关键参数 |
|---|---|---|
parser |
解析输入指令 | format, encoding |
processor |
执行核心处理逻辑 | mode, timeout |
output |
格式化输出结果 | format, encoding |
本skill还覆盖以下能力场景: 企业邮件自动化与、批量发送方案、支持模板与定时调、邮件工具箱专业版、面向企业用户与高、效能个人用户、Use、需要提升效率、自动化流程、批量处理、工作流优化时使用、不适用于需要人工、创意判断的任务、适用于独立开发者、企业团队和自动化、工作流场景。这些能力在上述核心功能中均有对应处理逻辑。
市场部需要向2000名客户发送个性化的促销邮件,每封邮件包含客户姓名与专属优惠码。
准备收件人列表 customers.csv:
email,name,discount_code,category customer1@example.com,张三,SAVE20,电子 customer2@example.com,李四,SAVE15,服装 customer3@example.com,王五,SAVE25,家居
创建邮件模板 templates/promo.html:
(根据实际场景填充),专属优惠等你来!
尊敬的 (根据实际场景填充):
感谢您对我们 (根据实际场景填充) 品类的关注,为您奉上专属优惠码:(根据实际场景填充)
优惠码有效期至2026年7月31日,请尽快使用。
执行批量发送:
# 试运行(预览不实际发送) python email_sender.py batch-send --recipients customers.csv --template templates/promo.html --subject "(根据实际场景填充) - 专属优惠码 (根据实际场景填充)" --rate-limit 20 --dry-run # 正式发送(使用多 SMTP 负载均衡) python email_sender.py batch-send --recipients customers.csv --template templates/promo.html --subject "(根据实际场景填充) - 专属优惠码 (根据实际场景填充)" --rate-limit 20 --pool gmail,outlook --retry 3 --log batch_promo.log
输出示例:
📋 批量发送任务 收件人: 2000 模板: templates/promo.html 速率: 20 封/分钟 SMTP 池: gmail, outlook [1/2000] ✅ customer1@example.com - 张三 - SAVE20 (via gmail) [2/2000] ✅ customer2@example.com - 李四 - SAVE15 (via outlook) ... 📊 发送完成: 1998 成功, 2 失败 失败列表: failures.csv 发送报告: batch_promo_report.json
运维团队需要每天早上8点自动发送系统监控日报给管理层。
# 创建定时任务 python email_sender.py schedule create --name "daily-report" --cron "0 8 * * 1-5" --to "management@company.com" --subject "系统监控日报 - (根据实际场景填充)" --template templates/daily_report.html --data-source "generate_report.py" --timezone "Asia/Shanghai" # 查看所有定时任务 python email_sender.py schedule list # 查看任务执行历史 python email_sender.py schedule history --name "daily-report"
企业有3个邮箱账户用于发送,需要负载均衡分配发送量。
from email_sender import EmailSender, SMTPPool
# 配置多 SMTP 服务商
pool = SMTPPool([
{"name": "gmail-primary", "smtp_server": "smtp.gmail.com", "smtp_port": 587,
"username": "sender1@company.com", "password": "pass1", "weight": 50},
{"name": "outlook-backup", "smtp_server": "smtp.office365.com", "smtp_port": 587,
"username": "sender2@company.com", "password": "pass2", "weight": 30},
{"name": "yahoo-extra", "smtp_server": "smtp.mail.yahoo.com", "smtp_port": 587,
"username": "sender3@company.com", "password": "pass3", "weight": 20},
])
sender = EmailSender(pool=pool)
# 批量发送
results = sender.batch_send(
recipients="customers.csv",
template="templates/promo.html",
subject="优惠通知",
rate_limit=30,
retry=3
)
print(f"成功: {results.success}, 失败: {results.failed}")
print(f"服务商分配: {results.provider_stats}")
专业版完全兼容免费版,现有配置与 API 无需修改:
# 免费版 API 依然有效
from email_sender import EmailSender
sender = EmailSender("email_config.json")
sender.send_email(to_email="x@y.com", subject="测试", body="内容")
# 专业版新增 API
sender.batch_send(recipients="list.csv", template="tpl.html", subject="通知")
创建 smtp_pool.json:
{
"pool": [
{
"name": "primary",
"smtp_server": "smtp.gmail.com",
"smtp_port": 587,
"username": "sender1@company.com",
"password": "app_password_1",
"weight": 50,
"daily_limit": 500
},
{
"name": "backup",
"smtp_server": "smtp.office365.com",
"smtp_port": 587,
"username": "sender2@company.com",
"password": "app_password_2",
"weight": 50,
"daily_limit": 500
}
],
"strategy": "weighted",
"failover": true
}
{
"smtp_server": "smtp.gmail.com",
"smtp_port": 587,
"username": "your-email@gmail.com",
"password": "your-app-password",
"sender_name": "企业邮件系统",
"use_tls": true,
"pro": {
"batch": {
"rate_limit": 20,
"max_recipients": 5000,
"retry_count": 3,
"retry_delay": 60,
"concurrency": 10
},
"pool": {
"config_file": "smtp_pool.json",
"strategy": "weighted",
"failover": true
},
"schedule": {
"enabled": true,
"timezone": "Asia/Shanghai",
"queue_dir": "~/.config/email-toolkit/queue"
},
"bounce": {
"enabled": true,
"check_interval": 3600,
"auto_clean": true
},
"analytics": {
"enabled": true,
"log_file": "~/.config/email-toolkit/analytics.log"
}
}
}
-app-password: 命令参数,用于指定操作选项-newsletter: 命令参数,用于指定操作选项--rate-limit: 命令参数,用于指定操作选项--timezone: 命令参数,用于指定操作选项-primary: 命令参数,用于指定操作选项结果处理: 执行完成后,查看输出结果确认操作状态。成功时输出包含处理摘要和结果数据;失败时根据错误信息排查问题,参考错误处理章节获取恢复步骤。
--data: 命令参数,用于指定操作选项-extra: 命令参数,用于指定操作选项--all: 命令参数,用于指定操作选项--retry: 命令参数,用于指定操作选项-backup: 命令参数,用于指定操作选项--since: 命令参数,用于指定操作选项--subject: 命令参数,用于指定操作选项-report: 命令参数,用于指定操作选项--data-source: 命令参数,用于指定操作选项-send: 命令参数,用于指定操作选项--recipients: 命令参数,用于指定操作选项--log: 命令参数,用于指定操作选项--dry-run: 命令参数,用于指定操作选项| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 是 | 相关说明 |
| content | string | 否 | 相关说明, 默认: 默认值 |
| content | string | 否 | 相关说明, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
result: "相关说明",
result: "相关说明",
result: "相关说明",
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| Python | 运行时 | 必需 | 官方网站下载安装 |
| Python 标准库 | 运行库 | 必需 | Python 自带(smtplib, email, csv, json) |
| 邮箱账户 | 账户 | 必需 | 注册主流邮箱服务商 |
| 应用专用密码 | 凭证 | 必需 | 邮箱安全设置页生成 |
| cron 服务 | 系统服务 | 可选 | 系统自带(定时任务需要) |
| 数据库 | 存储引擎 | 可选 | 用于队列与日志(可选 SQLite 文件存储) |
{
"templates": {
"dir": "templates/",
"builtins": ["notification", "report", "invitation", "reminder"],
"custom": [
{
"name": "月度报告",
"file": "templates/monthly_report.html",
"variables": ["month", "data", "summary"]
}
]
}
}
{
"schedules": [
{
"name": "weekly-newsletter",
"cron": "0 10 * * 1",
"recipients": "subscribers.csv",
"template": "templates/newsletter.html",
"subject": "本周资讯 (根据实际场景填充)",
"timezone": "Asia/Shanghai"
}
]
}
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接,执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令请求;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
解决: 使用多 SMTP 负载均衡分散发送量:
# 使用多个服务商 python email_sender.py batch-send --recipients list.csv --pool gmail,outlook,yahoo --rate-limit 10
解决: 确保变量名与 CSV 列名一致:
# 验证模板 python email_sender.py template validate --name "通知" --data sample.json
解决: 检查 cron 表达式与时区:
# 验证 cron 表达式 python email_sender.py schedule validate --cron "0 8 * * 1-5" # 检查任务状态 python email_sender.py schedule status --name "daily-report"
解决: 检查各服务商凭证有效性:
# 测试所有 SMTP 服务商 python email_sender.py pool test --all # 查看服务商状态 python email_sender.py pool status
解决: 定期清理无效地址,优化收件人列表:
# 分析退信原因 python email_sender.py bounce analyze --since "2026-06-01" # 清理无效地址 python email_sender.py bounce clean --recipients customers.csv --output cleaned.csv
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 检查网络连接,重试请求;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章