一、环境准备与安装

基础环境:Python 3.8+

安装依赖:一行命令搞定

pip install pandas openpyxl pyyaml

⚡ 二、三步极简上手

第一步:配置SMTP邮箱

编辑 config.yaml,填入你的邮箱和授权码(⚠️ 注意是授权码,不是登录密码!

smtp:
  server: smtp.qq.com           # SMTP服务器地址
  port: 465                     # SMTP端口
  username: your_email@qq.com   # 邮箱账号
  password: your_auth_code      # 授权码
  use_ssl: true                 # 开启SSL加密

sender:
  name: 邮件群发系统            # 发件人显示名称
  email: your_email@qq.com      # 发件人邮箱

send:
  interval: 3                   # 发送间隔(秒),防封号必备
  max_retries: 3                # 失败重试次数
  batch_size: 10                # 每批发送数量

💡 常见邮箱SMTP配置速查

  • QQ邮箱smtp.qq.com,端口 465,需在邮箱设置开启SMTP获取授权码
  • 163邮箱smtp.163.com,端口 465,同理开启POP3/SMTP
  • Gmailsmtp.gmail.com,端口 465,需使用App Password

第二步:准备联系人和模板

1. 准备Excel (contacts.xlsx)
必填列为 email 和 name,其他列随意加,模板里都能用!

email name company course deadline
student1@xxx.com 张三 某大学 Python入门 2024-01-31
student2@xxx.com 李四 某公司 数据分析 2024-02-15

2. 编写邮件模板 (templates/course_notice.txt)
使用 {{字段名}} 语法,与Excel表头一一对应:

尊敬的{{name}}同学:

您好!您报名的【{{course}}】课程即将开课!

课程信息:
- 课程名称:{{course}}
- 报名截止:{{deadline}}

请尽快登录系统完成缴费,名额有限,先到先得!

{{sender_name}}
{{current_date}}

第三步:运行发送

# 1. 先发一封测试邮件给自己,确保配置无误
python email_sender.py --test your_email@qq.com

# 2. 正式批量群发
python email_sender.py \
  --contacts contacts.xlsx \
  --template course_notice \
  --subject "【开课通知】{{course}}即将开课"

# 3. 需要带附件?没问题!
python email_sender.py \
  --contacts customers.xlsx \
  --template promotion \
  --subject "【限时优惠】产品折扣活动" \
  --attachments brochure.pdf price_list.xlsx

📖 三、进阶玩法详解

1. 邮件主题也支持个性化

不仅正文可以替换,--subject 参数同样支持模板语法:

python email_sender.py --subject "【专属优惠】{{name}}先生/女士,{{product}}限时折扣" ...

2. 内置系统变量

除了Excel里的自定义列,系统还内置了以下变量可直接使用:

  • {{email}}:收件人邮箱
  • {{name}}:收件人姓名
  • {{sender_name}}:发件人名称(读取配置文件)
  • {{current_date}}:当前日期

3. 命令行参数全览

参数 简写 说明 必填
--config -c 配置文件路径 ❌(默认config.yaml)
--contacts -f 联系人Excel文件路径
--template -t 邮件模板名称
--subject -s 邮件主题
--attachments -a 附件文件名列表
--test - 发送测试邮件

🚨 四、踩坑避雷指南(FAQ)

❌ 问题1:SMTPAuthenticationError: 535 Login Fail
👉 解决:99%是因为用了登录密码而不是授权码!请去邮箱设置里生成独立的SMTP授权码。

❌ 问题2:发送几封后就连不上/报错 421
👉 解决:发送频率太高被服务商限制了。修改 config.yaml 中的 interval: 5(增大间隔),减小 batch_size

❌ 问题3:ValueError: Excel文件缺少必需列
👉 解决:检查Excel的第一行表头,必须包含英文的 email 和 name,且不要有空格。

🔒 五、安全与合规提示

作为技术人,用技术提效的同时也要守规矩:

  1. 勿硬编码密码:不要把邮箱密码写在代码里,建议使用环境变量或配置文件(并加入 .gitignore)。
  2. 合规发送:确保收件人是自愿接收邮件,邮件内容需合法合规,避免触发反垃圾邮件机制(如:少用夸张词汇、提供退订方式)。
  3. 数据安全:客户的Excel数据妥善保管,切勿上传至开源仓库!

🌟 总结

这个脚本轻量、实用,完美解决了日常运营中“批量又需定制”的邮件发送痛点。如果你也在做社群运营、培训机构或者客户维护,这个工具绝对能帮你省下无数个加班的夜晚!

系统完整源代码和文档地址:https://download.csdn.net/download/wjianwei666/92858004

如果觉得有用,别忘了点赞👍收藏⭐支持一下!有任何Bug或新需求,欢迎在评论区交流~

更多推荐