Python群发邮件,根据excel内容。

该博客介绍了如何使用Python读取Excel文件中的工资信息,并通过SMTP服务实现QQ邮箱的群发功能。具体步骤包括:开启SMTP服务,获取授权码,设置邮件内容和收件人,最后通过smtplib库发送邮件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python读取excel表中的工资内容,实现工资群发邮件。

前言

目的:读取excel数据中的每个人工资情况,根据每个人的邮箱,实现群发邮件的功能。
参考:廖雪峰

一、准备工作(QQ邮箱为例)

1. Excel表中Sheet1的内容
在这里插入图片描述
2. 邮箱登录用户名 from_addr :发送邮件的邮箱

3. 登录密码 password:为授权码
发送者的邮箱主页,设置,账户,开户服务中IMAP/SMTP服务 开启,扫码生成授权码。
在这里插入图片描述
在这里插入图片描述

4. 服务器地址 smtp_server: smtp.qq.com

以QQ邮箱为例:帮助中心,客户端设置,SMTP服务器
在这里插入图片描述

5. excel路径 file_path:工资.xls 文件存储的路径

二、代码

import os
import xlrd
import smtplib
from email import encoders
from email.mime.base import MIMEBase
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr


def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

def read_file(file_path):
	file_list = []
	work_book = xlrd.open_workbook(file_path)
	sheet_data = work_book.sheet_by_name('Sheet1')
	print('now is process :', sheet_data.name)
	Nrows = sheet_data.nrows

	for i in range(1, Nrows):
		file_list.append(sheet_data.row_values(i))

	return file_list

def send_gongzi(file_list, from_addr, password, smtp_server):
    for i in range(len(file_list)):
    
        person_info = file_list[i]
        person_name, jixiao, gongzi, jiangjin,email_add, yanglao = str(person_info[0]),  str(person_info[1]),  str(person_info[2]),  str(person_info[3]),  str(person_info[4]), str(person_info[5])
        
        msg = MIMEText('过年发工资' +'\n绩效:'+ jixiao +'\n工资:'+ gongzi + '\n奖金:'+ jiangjin+'\n养老:'+yanglao , 'plain', 'utf-8')
        
        msg['From'] = _format_addr('bai <%s>' % from_addr)
        msg['To'] = _format_addr(person_name + '<%s>' % email_add)
        msg['Subject'] = Header('春节过节费发放通知', 'utf-8').encode()
    
        server = smtplib.SMTP(smtp_server, 25)
        server.starttls() # 调用starttls()方法,就创建了安全连接
        server.login(from_addr, password) # 登录邮箱服务器
        server.sendmail(from_addr, [email_add], msg.as_string()) # 发送信息
        server.quit()
        print( " 姓名:", person_name, "已发送成功!")

if __name__ == '__main__':
    
    from_addr = '********@qq.com'   # 邮箱登录用户名
    password  = 'mhazrnwjormbah'           # 登录密码
    smtp_server='smtp.qq.com'     # 服务器地址,默认端口号25
    file_path = r'F:\9.14\emil\工资.xls'
    
    file_list = read_file(file_path)
    send_gongzi(file_list, from_addr, password, smtp_server)

结果

将excel表中的信息,依据每个人的邮箱进行群发。
李四收件箱情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值