python实现发送邮件,python无限制邮件群发
大家好,本文主要讲用Python实现群发邮件。有兴趣的同学过来看看,如果对你有帮助记得收藏。
00-1010群发邮件登录邮件设置邮件信息和文本设置附件发送邮件和关闭邮件服务摘要完整代码:
我们需要发送【集团销售排名表。xlsx]发送给[团队领导电子邮件]中的每个团队领导。xlsx]通过电子邮件。
这里我们将学习一个新的知识点——str.join(),通过它可以实现群发邮件的功能。
目录
从openpyxl导入load_workbook
导入smtplib
从email.mime.text导入MIMEText
从email.mime.multipart导入MIMEMultipart
#设置电子邮件账号
Account=input(请输入电子邮件帐户:)
#设置邮箱授权码
Token=input(请输入邮箱授权码:)
#设置邮箱服务器,端口
smtp=smtplib。SMTP_SSL(smtp.qq.com ,465)
#登录qq邮箱
smtp.login(帐户、令牌)
#打开工作表
Wb=load_workbook(。/04_月度考勤表. xlsx’)
sheet=wb.active
#写正文内容
Content=月份的考勤表已经出了,迟到45分钟以上的如下:\n
对于sheet.iter_rows中的row _ data(min _ row=2,values_only=True):
#找到迟到超过45分钟的人
if row_data[2] 45:
Content= Name: {name}总迟到时间:{time} \ n 。格式(名称=行数据[1],时间=行数据[2])
Content=详见附件
#创建一个简单的邮件对象
email_content=MIMEText(content, plain , utf-8 )
#读取工作表文件数据
用(。/04 _月度考勤表. xlsx , Rb) as f:
file_data=f.read()
#将内容类型设置为附件
attachment=MIMEText(file_data, base64 , utf-8 )
#设置附件标题和文件类型。
Attachment . add _ header( content-disposition , attachment ,filename= 04 _月度考勤表. xlsx )
#创建一个复合邮件对象
msg=MIMEMultipart()
#将正文添加到复合邮件对象中
邮件附件(电子邮件内容)
#向复合邮件对象添加附件
邮件附件(附件)
#设置发件人信息
Msg[发件人]=陈质枫
#设置收件人信息
msg[ To ]= Flash Finance的同事
#设置邮件标题
Msg[Subject]=04_月度考勤表
#发送邮件
smtp.sendmail(帐户, example@mail.com ,msg.as_string())
#关闭邮箱服务
smtp.quit()
接下来,我们只要基于这段代码进行调整,就可以实现批量发送邮件的功能。
群发邮件
只是注意登录时使用邮箱授权码而不是电子邮件密码。
导入smtplib
#设置电子邮件账号
Account=input(请输入电子邮件帐户:)
#设置邮箱授权码
Token=input(请输入邮箱授权码:)
#设置邮箱服务器,端口
smtp=smtplib。SMTP_SSL(smtp.qq.com ,465)
#登录qq邮箱
smtp.login(帐户、令牌)
登录邮箱
首先定义一个存储组长邮箱的空列表,遍历[组长邮箱. xlsx],得到每行的第二列,也就是邮箱地址,用append()添加。
列表。
但有一个问题,存放邮箱地址的列表是不能作为收件人的,可以打开邮箱看一下,群发邮件时,收件人的格式实际上是aaa@qq.com;bbb@qq.com;ccc@qq.com这样的,也就是以;
作为连接符。
因此需要先将所有单个的邮箱拼接成符合群发格式的收件人邮箱,这里就要用到str.join()
。
str.join() 的作用是连接可迭代对象中的所有字符串,举个例子:
# 定义列表list1 = ["a", "b", "c"]
# 以-作为字符串连接符
print(-.join(list1))
# 以+作为字符串连接符
print(+.join(list1))
可以看到字符串 'a','b','c'分别被 '-' 和 '+' 连接起来了。
# 定义列表email_list = ["aaa@qq.com", "bbb@qq.com", "ccc@qq.com"]
# 以;作为字符串连接符,将email_list中各邮箱拼接成"aaa@qq.com;bbb@qq.com;ccc@qq.com"
print( ;.join(email_list) )
from openpyxl import load_workbookfrom email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
# 打开《组长邮箱》
email_wb = load_workbook(./组长邮箱.xlsx)
email_sheet = email_wb.active
# 创建邮件列表
email_list = []
# 读取所有邮件地址
for row in email_sheet.iter_rows(min_row=2, values_only=True):
email_list.append(row[1])
# 设置邮箱账号
account = input(请输入邮箱账户:)
# 设置邮箱授权码
token = input(请输入邮箱授权码:)
# 设置邮箱服务器,端口
smtp = smtplib.SMTP_SSL(smtp.qq.com, 465)
# 登录qq邮箱
smtp.login(account, token)
# 设置邮件内容
msg = MIMEMultipart()
# 设置发送者信息
msg[From] = account
# 设置接受者信息
msg[To] = ;.join(email_list)
# 设置邮件标题
msg[Subject] = 销售等级排名汇报
# 设置邮件正文
content = 本月销售数据排名结果已计算完成,请各组长查收。
# 将正文添加到邮件内容里
email_content = MIMEText(content, plain, utf-8)
msg.attach(email_content)
设置附件
接下来就是把【等级一销售表.xlsx】和【小组销量排名表.xlsx】设置为附件,先读取【等级一销售表.xlsx】和【小组销量排名表.xlsx】,创建字典存放文件数据。
# 读取"等级一销售表"数据with open(./等级销售表/等级一销售表.xlsx, rb) as f:
rank_first_data = f.read()
# 读取"小组销量排名表"数据
with open(./小组销量排名表.xlsx, rb) as f:
group_rank_data = f.read()
# 文件数据字典
file_dict = {
等级一销售表.xlsx: rank_first_data,
小组销量排名表.xlsx: group_rank_data
}
遍历文件数据字典,设置附件,这里需要使用email模块再创建一个MIMEText对象,用以承载附件信息并添加入MIMEMultipart对象中。
# 读取"等级一销售表"数据
with open(./等级销售表/等级一销售表.xlsx, rb) as f:
rank_first_data = f.read()
# 读取"小组销量排名表"数据
with open(./小组销量排名表.xlsx, rb) as f:
group_rank_data = f.read()
# 文件数据字典
file_dict = {
等级一销售表.xlsx: rank_first_data,
小组销量排名表.xlsx: group_rank_data
}
for file in file_dict:
# 设置内容类型为附件
attachment = MIMEText(file_dict[file], base64, utf-8)
# 设置附件标题以及文件类型
attachment.add_header(Content-Disposition, attachment, filename=file)
# 将附件添加到邮件内容里
msg.attach(attachment)
发送邮件并关闭邮箱服务
这一步就很简单啦,只需要两行代码。
# 发送邮件smtp.sendmail(account, email_list, msg.as_string())
# 关闭邮箱服务
smtp.quit()
到这里,我们的群发邮件
的代码也完成了,来看一下整合后的思维导图吧。
项目总结
终于,我们将项目的四个功能块逐一实现了,还记得四个功能块分别是什么吗?
1)功能一,我们先统计了全国各个销售部的销售数据,并进行排序。
2)功能二,我们根据排序后的结果,对全体销售人员按销量划分了等级。
3)功能三,对九个销售小组进行优秀频次和平均销量的排序。
4)功能四,将等级1的销售数据和排名数据以邮件形式发送给各地区销售部主管。
完整代码:
from openpyxl import load_workbookimport smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
email_wb=load_workbook(./static/组长邮箱.xlsx)
email_sheet=email_wb.active
email_list=[]
for row in email_sheet.iter_rows(min_row=2,values_only=True):
email_list.append(row[1])
print(email_list)
# 设置邮箱账号
account = input(请输入邮箱账户:)
# 设置邮箱授权码
token = input(请输入邮箱授权码:)
# 设置邮箱服务器,端口
smtp = smtplib.SMTP_SSL(smtp.qq.com, 465)
# 登录qq邮箱
smtp.login(account, token)
msg=MIMEMultipart()
# 设置发送者信息
msg[From] = account
# 设置接受者信息
msg[To] = ;.join(email_list)
# 设置邮件标题
msg[Subject] = 销售等级排名汇总
content=本月销售数据排名结果已经完成,请各位组长查收
email_content=MIMEText(content,plain,utf-8)
msg.attach(email_content)
# 读取"等级一销售表"数据
with open(./static/等级销售表/等级一销售表.xlsx, rb) as f:
rank_first_data = f.read()
# 读取"小组销量排名表"数据
with open(./static/小组销量排名表.xlsx, rb) as f:
group_rank_data = f.read()
# 文件数据字典
file_dict = {
等级一销售表.xlsx: rank_first_data,
小组销量排名表.xlsx: group_rank_data
}
for file in file_dict:
# 设置内容类型为附件
attachment = MIMEText(file_dict[file], base64, utf-8)
# 设置附件标题以及文件类型
attachment.add_header(Content-Disposition, attachment, filename=file)
# 将附件添加到邮件内容里
msg.attach(attachment)
# 发送邮件
smtp.sendmail(account, email_list, msg.as_string())
# 关闭邮箱服务
smtp.quit()
运行效果:
可以自行设置邮箱进行验证。
到此这篇关于用Python实现群发邮件的文章就介绍到这了,更多相关Python群发邮件内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。