用Python批量读取考生成绩单,并自动发送录取通知书邮件

火山方舟向量数据库大模型

picture.image

01

前言

本文将利用Python技术,手把手教你用Python批量读取考生成绩,邮件合并且自动发送邮件,赶紧学起来吧~

需求如下:

picture.image

02

准备工作

首先,我们将图中三个文件置于同一文件夹中,邮件合并.ipynb为新建的Python文件,123邮件合并数据源.xls为成绩Excel表,邮件合并模板.docx为录取通知书模板。

picture.image

我们打开录取通知书模板,长这样:

picture.image

如果你使用过Word 邮件合并 功能批量生成文件,那这种模板就再熟悉不过了。

03

实战演练

文件都准备完毕,接下来打开Python文件,开始编写代码。

1、导入模块

导入之前需要安装两个主要库,一个是操作word模板的doctxpl,一个是操作邮件的zmail。因此先pip它们,很快~


          
#安装模块  
pip install docxtpl  
pip install zmail  

      

接着导入需要用到的模块:


          
#导入模板库from docxtpl import DocxTemplateimport pandas as pd
          
#导入邮件库import zmailimport time
      

2、邮件合并

运用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')  

      

运行结果:

picture.image

3、发送邮件

接下来,我们需要将新生成的录取通知书逐个通过QQ邮箱发送,发件之前呢,需要对QQ邮箱进行简单配置。

第1步 :打开QQ邮箱,点击 设置-账户 ,一直拉到 SMTP服务 。

picture.image

开启 SMTP服务,结果系统提示QQ没有申请第二代密码保护,无法开启,于是申请密保。申请密保主要是把手机号绑定你的QQ,如果申请过程中忘记一些信息,邀请你的好友辅助验证即可~

picture.image

好友辅助验证完成后,按要求发送短信:

picture.image

终于拿到授权码(Python发送QQ邮件必备参数):

picture.image

第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)+'封邮件己发送成功')
      

邮件发送后,打开其中一封邮件,如下:

picture.image

04

完整代码


          
#导入模板库  
from docxtpl import DocxTemplate  
import pandas as pd  
#导入邮件库  
import zmail  
import time  
#读取数据源  
df=pd.read_excel('123邮件合并数据源.xls')  
print(df)  
  
#生成文件并以附件形式发送到邮箱  
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')  
    #设置邮件主题  
    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)+'封邮件己发送成功')  
  
print('邮件己全部发送成功')  

      

picture.image picture.image picture.image

picture.image

picture.image

点击下方阅读原文加入 社区会员

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论