想法:公司财务姐姐给员工发工资条一人一人的发,心疼一下下做个简单的脚本实现通过脚本实现群发。
实现:对员工工资的 Excel表格进行遍历通过每个员工自己的邮箱号码,发送各自的工资信息
版本: Python 3.11
操作环境: windows 11
代码工具: pycharm-professional-2022.1.3
from openpyxl import load_workbook
import smtplib
# 发送邮件需要下面的两条引入
from import MIMEText # 邮件正文
from email.header import Header # 邮件头 (python 2.6 后作废)
from email.utils import formataddr
# 加载excel文件
wb = load_workbook("于的工资表.xlsx",data_only=True)
sheet = wb.active# 登陆邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.qq", 465) # 发送人邮箱中的SMTP服务器,端口事25
smtp_obj.login("发件人的邮箱", "临时密码") # 括号中对应的是发件人邮箱账号和密码
# smtp_obj.set_debuglevel(1) #显示调试信息# 先循环一下这个表
count = 0
# table_col_names = [] #表头
table_col_html = '<thead>' # 生成一个
for row in sheet.iter_rows(min_row=1):count += 1if count == 1 :for col in row:# table_col_names.append(col.value)table_col_html += f"<th>{col.value}</th>"# print(table_col_names)# breaktable_col_html += "</thead>"continueelse:row_text = "<tr>" #开始一行for cell in row:#print(cell.value, end=",")row_text += f"<td>{cell.value}</td>"row_text += "</tr>" #结束一行name = row[2]staff_email = row[1].valueprint(staff_email, name.value)mail_body_context = f'''<h3>{name.value},你好:</h3><p>请查收你2023年的工资条.....<table border="1px solid black">{table_col_html}{row_text}</table></p>'''# msg = MIMEText(mail_body_context, "html", "utf-8") # 构建邮件正文## msg["Subject"] = Header("YU的工资信息", "utf-8") # 主题# msg["From"] = Header("发件人的邮箱", "utf-8") # 发送人# msg["To"] = Header("于员工", "utf-8") # 接收人# 以上命令 Python2.6 前可以使用msg = MIMEText(mail_body_context, "html", "utf-8")msg['Subject'] = 'YU的工资信息'msg['From'] = formataddr(['YU','发件人的邮箱'])msg['To'] = '发件人的邮箱'msg['Cc'] = '想要抄送的邮箱'# 发送smtp_obj.sendmail('发件人邮箱',[staff_email],msg.as_string())print(f"成功发送到{staff_email}{name.value}")
注:
1.代码中的 Excel 文件与此脚本在同目录下
2.确保发件人的邮箱和密码都是正确的
3.代码中注释掉的部分中,有些是Python 2.6之后已无法使用的命令
以上代码是自学Python后编写,好多处很繁琐望得到更好的推荐和方法
本文发布于:2024-01-31 20:25:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170670393731128.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |