关注我,学习更多实用Python知识
🌈 Hi,宝子们~ 一个痛点,一个脚本,轻松提效
🛠️ 痛点:月底催款,你是不是还在这样操作:打开Excel → 复制客户信息 → 打开邮箱 → 粘贴 → 改金额和逾期天数 → 发送 → 下一个……发完50个客户,手酸眼花,还担心把A公司的欠款金额发给了B公司!
🎯 今天分享一个Python小脚本:读取欠款客户Excel表格,自动给每位客户发送专属催款通知邮件,客户名称、欠款金额、逾期天数、合同编号全部自动匹配,绝不串发!

📊假设有一张《欠款客户名单.xlsx》:

🚀想要的效果:一键运行→ 每家公司收到一封专属催款邮件 → 邮件里只显示固定对象的欠款信息 → 可根据不同情况设置语气 → 3分钟全部发完!
import pandas as pdimport smtplibimport sslfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom datetime import datetime# ===== 配置区(改成你自己的信息)=====发件人邮箱 = "你的QQ邮箱@qq.com" #以QQ邮箱为例邮箱授权码 = "你的QQ邮箱授权码"# QQ邮箱需要开启SMTP获取授权码SMTP服务器 = "smtp.qq.com"SMTP端口 = 587# ====================================def 发送催款通知(收件人, 客户名称, 合同编号, 欠款金额, 逾期天数, 最晚还款日):# 构造邮件正文 邮件正文 = f"""尊敬的 {客户名称}:您好!截至 {datetime.now().strftime('%Y年%m月%d日')},贵公司以下合同款项尚未结清:┌─────────────────────────────────┐│ 合同编号:{合同编号}│ 欠款金额:{欠款金额:,.2f} 元│ 逾期天数:{逾期天数} 天│ 最晚还款日:{最晚还款日}└─────────────────────────────────┘请尽快安排付款,感谢配合!此邮件为系统自动发送,请勿直接回复。"""# 构造邮件 msg = MIMEMultipart() msg["Subject"] = f"催款通知 - {合同编号} - 逾期{逾期天数}天" msg["From"] = 发件人邮箱 msg["To"] = 收件人 msg.attach(MIMEText(邮件正文, "plain", "utf-8"))# 发送邮件 context = ssl.create_default_context() server = smtplib.SMTP(SMTP服务器, SMTP端口) server.starttls(context=context) server.login(发件人邮箱, 邮箱授权码) server.sendmail(发件人邮箱, 收件人, msg.as_string()) server.quit() print(f"✓ {客户名称} 发送成功")# 读取Excel并批量发送df = pd.read_excel("欠款客户名单.xlsx")for _, row in df.iterrows(): 发送催款通知( 收件人=row["联系人邮箱"], 客户名称=row["客户名称"], 合同编号=row["合同编号"], 欠款金额=row["欠款金额"], 逾期天数=row["逾期天数"], 最晚还款日=row["最晚还款日"] )print("全部发送完成!")🚀代码运行,控制台端输出:
共找到 3 家欠款客户,开始发送催款通知...✓ 上海XX贸易 - 逾期15天 发送成功✓ 深圳科技 - 逾期32天 发送成功✓ 杭州电商 - 逾期7天 发送成功发送完成!成功:3,失败:0🚀接收者收到邮件,如下图所示:

🚀每家客户收到的邮件内容完全个性化,完全省去手敲的动作!
备注:想详细了解如何发送邮件的细节可翻阅之前的文章:用3分钟学会 Python 自动发邮件,定时推送+各种附件一劳永逸!
openpyxl 生成该客户的账单,再用 MIMEMultipart 添加附件 | |
msg["Cc"] = "sales_manager@company.com" | |
催款发送记录.xlsx | |
time.sleep(5) 每封邮件间隔5秒 |
💡 关注我,每周分享Python干货×技巧
📌 如这篇文章对你有帮助,欢迎:
👍 点赞 | ⭐ 收藏 | 🔄 分享给需要的朋友
💬 获取源码:关注本公众号
💬 后台发送关键字:" 自动邮件 "获取


👇点击阅读往期文章