网站首页 > 技术文章 正文
Word中有邮件合并的功能将不同的信息群发给对应的个人,看看用python是怎么实现的:
import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 读取 Excel 文件
excel_file = pd.ExcelFile('sa_test.xlsx')
df = excel_file.parse()
print(df['月份'])
df['月份'] = pd.to_datetime(df['月份'])
print(df['月份'])
df['月份'] = df['月份'].dt.strftime('%Y年%m月')
print(df)
# QQ 邮箱配置( 这块要替换成自己实际的)
qq_sender_email = "373*648@qq.com" #替换成自己的
qq_sender_password = "ojwxniduzabiej"
qq_smtp_server = "smtp.qq.com"
qq_smtp_port = 465
# 遍历每个人的工资信息并发送邮件
for index, row in df.iterrows():
month = row['月份']
name = row['姓名']
salary = row['工资']
recipient_email = row['邮箱']
note = row['备注']
..............................................................................#这块可以根据需要添加字工资表里的字段
# 构建工资条内容
salary_info = f"尊敬的 {name},您本月的工资为:{salary} 元\n姓名: {name}\n工资: {salary}\n邮箱: {recipient_email}\n月份: {month}\n备注: {note}"
# 创建邮件对象
message = MIMEMultipart()
message["Subject"] = f"{month}工资条通知"
# 用 QQ 邮箱发送
message["From"] = qq_sender_email
sender_email = qq_sender_email
sender_password = qq_sender_password
smtp_server = qq_smtp_server
smtp_port = qq_smtp_port
message["To"] = recipient_email
# 添加邮件正文
message.attach(MIMEText(salary_info, "plain", "utf-8"))
优化点解释
- 异常处理细化:原代码使用了通用的 Exception 捕获所有异常,这不利于精准定位问题。优化后的代码对 smtplib.SMTPAuthenticationError(认证失败)和 smtplib.SMTPException(其他 SMTP 相关错误)进行了单独捕获和处理,能更清晰地告知用户错误原因。最后保留一个通用的 Exception 捕获未知类型的错误,防止程序因未预料到的异常而崩溃。
注意事项
- 请确保 sa_test.xlsx 文件存在,并且文件中包含 月份、姓名、工资、邮箱 和 备注 这些列。
- 要将 qq_sender_email 和 qq_sender_password 替换为真实有效的 QQ 邮箱地址和对应的授权码。
猜你喜欢
- 2025-03-20 Python趣味打怪:60秒学会一个例子,147段代码助你从入门到大师
- 2025-03-20 引人遐想,用 Python 获取你想要的“某个人”摄像头照片
- 2025-03-20 基于深度学习的中文车牌识别与管理系统(含UI界面,Python代码)
- 2025-03-20 Python搭建UDP网络通信模型,看了你也会
- 2025-03-20 风变编程-python基础语法-第17关用python发邮件
- 2025-03-20 Python实现机器学习算法——贝叶斯网络
- 2025-03-20 Python 基础教程十五之 Python 使用requests库发送http请求
- 2025-03-20 国外友人开创Python模拟登陆神库,完美修改它为咱们所用
- 2025-03-20 全新上线!免费体验最热门Claude2API接口Python版本整合QQ
- 2025-03-20 使用 Python 自动发送 QQ 消息(python自动发送邮件)
- 258℃Python短文,Python中的嵌套条件语句(六)
- 258℃python笔记:for循环嵌套。end=""的作用,图形打印
- 257℃PythonNet:实现Python与.Net代码相互调用!
- 252℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 107℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 83℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)