其他分享
首页 > 其他分享> > 20201203-5 批量发送 email【】

20201203-5 批量发送 email【】

作者:互联网

 

 1-1
 批量发送 email
 1 from openpyxl import load_workbook 2 import smtplib 3 from email.mime.text import MIMEText 4 from email.mime.multipart import MIMEMultipart 5  6 # 设置邮箱账号 7 account = input('请输入邮箱账户:') 8 # 设置邮箱授权码 9 token = input('请输入邮箱授权码:')10 # 设置邮箱服务器,端口11 smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)12 # 登录qq邮箱13 smtp.login(account, token)14 15 # 打开工作表16 wb = load_workbook('./04_月考勤表.xlsx')17 sheet = wb.active18 19 # 编写正文内容20 content = '四月的考勤表已出,其中迟到时长超出 45 分钟的人员如下:\n'21 for row_data in sheet.iter_rows(min_row=2, values_only=True):22     # 获取迟到时长超过45分钟的人员23     if row_data[2] > 45:24         content += '姓名:{name} 迟到总时长:{time} \n'.format(name=row_data[1], time=row_data[2])25 content += '详情见附件内容'26 27 # 创建简单邮件对象28 email_content = MIMEText(content, 'plain', 'utf-8')29 30 # 读取工作表文件数据31 with open('./04_月考勤表.xlsx', 'rb') as f:32     file_data = f.read()33 34 # 设置内容类型为附件35 attachment = MIMEText(file_data, 'base64', 'utf-8')36 # 设置附件标题以及文件类型37 attachment.add_header('Content-Disposition', 'attachment', filename='04_月考勤表.xlsx')38 39 # 创建复合邮件对象40 msg = MIMEMultipart()41 42 # 添加正文到复合邮件对象中43 msg.attach(email_content)44 45 # 添加附件到复合邮件对象里46 msg.attach(attachment)47 48 # 设置发送者信息49 msg['From'] = '陈知枫'50 # 设置接受者信息51 msg['To'] = '闪光金融的各位同事们' 52 # 设置邮件标题53 msg['Subject'] = '04_月考勤表'54 55 # 发送邮件56 smtp.sendmail(account, 'example@mail.com', msg.as_string())  
57 # 关闭邮箱服务58 smtp.quit()

 1-1-1
 1 from openpyxl import load_workbook 2 import smtplib 3 from email.mime.text import MIMEText 4 from email.mime.multipart import MIMEMultipart 5  6 # 设置邮箱账号 7 account = input('请输入邮箱账户:') 8 # 设置邮箱授权码 9 token = input('请输入邮箱授权码:')10 # 设置邮箱服务器,端口11 smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)12 # 登录qq邮箱13 smtp.login(account, token)14 15 # 打开工作表16 wb = load_workbook('./04_月考勤表.xlsx')17 sheet = wb.active18 19 # 编写正文内容20 content = '四月的考勤表已出,其中迟到时长超出 45 分钟的人员如下:\n'21 for row_data in sheet.iter_rows(min_row=2, values_only=True):22     # 获取迟到时长超过45分钟的人员23     if row_data[2] > 45:24         content += '姓名:{name} 迟到总时长:{time} \n'.format(name=row_data[1], time=row_data[2])25 content += '详情见附件内容'26 27 # 设置正文,创建简单邮件对象28 email_content = MIMEText(content, 'plain', 'utf-8')29 30 # 读取工作表文件数据31 with open('./04_月考勤表.xlsx', 'rb') as f:32     file_data = f.read()33 34 # 设置内容类型为附件35 attachment = MIMEText(file_data, 'base64', 'utf-8')36 # 设置附件标题以及文件类型37 attachment.add_header('Content-Disposition', 'attachment', filename='04_月考勤表.xlsx')38 39 # 创建复合邮件对象40 msg = MIMEMultipart()41 42 # 添加正文到复合邮件对象中43 msg.attach(email_content)44 45 # 添加附件到复合邮件对象里46 msg.attach(attachment)47 48 # 设置发送者信息49 msg['From'] = '陈知枫'50 # 设置接受者信息51 msg['To'] = '闪光金融的各位同事们' 52 # 设置邮件标题53 msg['Subject'] = '04_月考勤表'54 55 # 发送邮件56 smtp.sendmail(account, 'example@mail.com', msg.as_string())  
57 # 关闭邮箱服务58 smtp.quit() 

1.第 6~13 行实现了第一个功能块:登录邮箱。
2.第 15~28 行实现第二个功能块:设置正文内容。
3.第 30~37 行实现第三个功能块:设置附件内容。
4.第 40~54 行实现第四个功能块:设置邮件内容及信息。
  我们在这里会把正文和附件整合,并设置好发送者、接收者、标题等信息。
5.第 56~59 行实现第五个功能块:发送邮件并关闭邮箱服务。

SMTP(简单邮件传输协议)是用于发送电子邮件的协议。规定电子邮件应该如何在邮件服务器之间传递。
它就像一个官方的规则,用于控制信件的中转方式。

smtplib是Python的内置模块,它对SMTP协议进行了简单的封装,提供了一种发送电子邮件的方法。
smtp = smtplib.SMTP_SSL(host, port)
第一步,我们需要实例化模块smtplib中的类SMTP_SSL(),得到一个smtp对象。
这个smtp对象就像给我们送邮件的邮差。你给他一些特定的命令后,他就会帮你完成邮件的发送等工作。
需要传入两个参数:参数1:host(服务器地址),参数2:port(端口号)。
服务器地址,一般是公开的一个网站地址,相当于是该服务在互联网中的标识。

而端口号就好比一个通道,通向这个网站特定的一个服务。
【注意】在传入服务器地址的时候需要加上单引号,以字符串的形式传入。

如果你不使用qq邮箱也可以直接百度:对应邮箱+smtp服务器,如:gmail smtp服务器,或在它对应的帮助中心找到服务器地址。
MIMEText()
编辑正文文本,我们需要实例化类MIMEText(),得到一个简单邮件对象。
而简单邮件对象可以用来承载邮件内容,例如:正文文本、附件。

email_content = MIMEText(_text, _subtype, _chartset)
实例化类MIMEText(),得到一个简单邮件对象 email_content(邮件正文)。
实例化MIMEText()时,需要往括号内传入三个参数:参数1:_text 、参数2:_subtype、参数3:_chartset,咱们一个个来看。

参数1:_text,意思就是内容。例如:构造正文时就是正文文本,构造附件时就是读取到的附件文件。
参数2:_subtype,意思是文本格式。构造正文内容时文本格式为'plain',而构造附件时文本格式为'base64'。
参数3:_chartset,意思是编码方式。此处采用'utf-8',它是电子邮件、网页及其他存储或传送文字的应用中,常常采用的编码。

         

 

 

标签:批量,smtp,content,20201203,msg,邮箱,email,邮件
来源: https://blog.51cto.com/u_15149862/2714696