使用Python实现邮件群发

该文章介绍了一个使用Python3.11编写的脚本,通过读取Excel表格中的员工邮箱和工资信息,利用SMTP_SSL连接QQ邮箱服务器,批量发送个性化工资条邮件。脚本适用于Windows11环境,使用了openpyxl和smtplib库。
摘要由CSDN通过智能技术生成

想法:公司财务给员工发工资条一人一人的发,做个简单的脚本实现通过脚本实现群发。

实现:对员工工资的 Excel表格进行遍历通过每个员工自己的邮箱号码,发送各自的工资信息

版本: Python 3.11

操作环境: windows 11 

代码工具: pycharm-professional-2022.1.3

 代码实现

from openpyxl import load_workbook
import smtplib
# 发送邮件需要下面的两条引入
from email.mime.text 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.com", 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 += 1
    if count == 1 :
        for col in row:
            # table_col_names.append(col.value)
            table_col_html += f"<th>{col.value}</th>"
        # print(table_col_names)
        # break
        table_col_html += "</thead>"
        continue
    else:
        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].value
        print(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之后已无法使用的命令

代码中Excel格式如图

 成果图(格式如图)

注注注注注注注注

        以上代码是自学Python后编写,好多处很繁琐望得到更好的推荐和方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值