使用Python实现邮件群发

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

实现:对员工工资的 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后编写,好多处很繁琐望得到更好的推荐和方法

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现Python代码实现邮件群发工资条,你可以使用Python的smtplib和email库来发送邮件。下面是一个简单的示例代码: ```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # 邮件服务器的配置信息 smtp_server = "smtp.example.com" smtp_port = 587 smtp_username = "your_username" smtp_password = "your_password" # 发件人和收件人信息 sender = "sender@example.com" recipients = ["recipient1@example.com", "recipient2@example.com"] # 邮件内容 subject = "工资条" body = "附件中是本月的工资条,请查收。" # 创建邮件对象 msg = MIMEMultipart() msg["From"] = sender msg["To"] = ", ".join(recipients) msg["Subject"] = subject # 添加邮件正文 msg.attach(MIMEText(body, "plain")) # 添加附件 attachment_path = "path_to_attachment.pdf" with open(attachment_path, "rb") as attachment: part = MIMEBase("application", "octet-stream") part.set_payload(attachment.read()) part.add_header("Content-Disposition", f"attachment; filename= {attachment_path}") msg.attach(part) # 发送邮件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(smtp_username, smtp_password) server.send_message(msg) print("邮件发送成功!") ``` 请注意,你需要将代码中的以下信息替换为你自己的信息: - 邮件服务器的配置信息(smtp_server、smtp_port、smtp_username、smtp_password) - 发件人和收件人信息(sender、recipients) - 邮件内容(subject、body) - 附件路径(attachment_path) 这是一个简单的示例,你可以根据自己的需求进行修改和扩展。例如,你可以使用循环来发送多个工资条附件,或者从文件中读取收件人列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值