本文转载自微信公众号「菜J学Python」,用P邮件作者 J哥、量读燕子。取考取通转载本文请联系菜J学Python公众号。生成送录
前言
大家好,绩单我是并自J哥。
高考刚结束不久,知书很多小伙伴肯定都期待有个好成绩,用P邮件能够进入理想的量读大学。而一旦成绩出来,取考取通大学招生办老师将面临给广大学子发送录取通知书的生成送录巨大工作压力,本文将利用Python技术,绩单手把手教你用Python批量读取考生成绩,并自邮件合并且自动发送邮件,知书赶紧学起来吧~
需求如下:
首先,用P邮件我们将图中三个文件置于同一文件夹中,邮件合并.ipynb为新建的Python文件,123邮件合并数据源.xls为成绩Excel表,邮件合并模板.docx为录取通知书模板。
我们打开录取通知书模板,长这样:
如果你使用过Word邮件合并功能批量生成文件,那这种模板就再熟悉不过了。
文件都准备完毕,接下来打开Python文件,开始编写代码。
1、导入模块
导入之前需要安装两个主要库,一个是网站模板操作word模板的doctxpl,一个是操作邮件的zmail。因此先pip它们,很快~
#安装模块 pip install docxtpl pip install zmail接着导入需要用到的模块:
#导入模板库 from docxtpl import DocxTemplate import pandas as pd #导入邮件库 import zmail import time2、邮件合并
运用pandas的read_excel方法读取考生成绩表,逐个遍历考生信息,并将关键信息渲染至Word模板中,最后以考生姓名作为文件名保存。
#读取数据源 df=pd.read_excel(123邮件合并数据源.xls) print(df) #Word邮件合并批量生成录取通知书 for i in range(len(df)): #以字典形式存储模板中需要更新的关键信息 contxt=dict(df.iloc[i]) #获取姓名,作为文件名 filename=contxt[姓名] #获取邮箱地址 youxiang=contxt[邮箱] #打开模板文件 tpl = DocxTemplate(邮件合并模板.docx) #渲染(更新)模板文件生成新文件 tpl.render(contxt) #保存文件 tpl.save(filename+.docx)运行结果:
3、发送邮件
接下来,我们需要将新生成的录取通知书逐个通过QQ邮箱发送,发件之前呢,需要对QQ邮箱进行简单配置。
第1步:打开QQ邮箱,点击设置-账户,一直拉到SMTP服务。
开启SMTP服务,结果系统提示J哥的QQ没有申请第二代密码保护,无法开启,于是申请密保。申请密保主要是源码库把手机号绑定你的QQ,如果申请过程中忘记一些信息,邀请你的好友辅助验证即可~
好友辅助验证完成后,按要求发送短信:
终于拿到授权码(Python发送QQ邮件必备参数):
第2步:加入发送邮件的Python代码段
发送邮件的代码相对简单,以下代码段也给出了详细的注释,当然,最有效的学习方式还是参考官方文档,可以对各个参数进行深入研究。
#设置邮件主题 subject=录取通知书 #设置邮件内容 content=你己被我校录取,请妥善保管通知书,并按时报到! #设置邮件附件 attachment=filename+.docx #设置邮件信息 mail={ subject:subject,content_text:content,attachments:attachment} #设置发件邮箱 server = zmail.server(你的@qq.com,你的授权码) #发送邮件 server.send_mail(youxiang,mail) time.sleep(2) print(第+str(i+1)+封邮件己发送成功)邮件发送后,打开其中一封邮件,如下: