点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

欢笑情如旧,萧疏鬓已斑。

01

前言

大家好,我是J哥。

高考刚结束不久,很多小伙伴肯定都期待有个好成绩,能够进入理想的大学。而一旦成绩出来,大学招生办老师将面临给广大学子发送录取通知书的巨大工作压力,本文将利用Python技术,手把手教你用Python批量读取考生成绩,邮件合并且自动发送邮件,赶紧学起来吧~

需求如下:

02

准备工作

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

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

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

03

实战演练

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

1、导入模块

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

#安装模块
pip install docxtpl
pip install zmail

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

#导入模板库
from docxtpl import DocxTemplate
import pandas as pd
#导入邮件库
import zmail
import 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')

运行结果:

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

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

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('邮件己全部发送成功')

------------------- End -------------------

往期精彩文章推荐:

  • 一篇文章教会你用Python抓取抖音app热点数据

  • 手把手教你进行pip换源,让你的Python库下载嗖嗖的

  • 手把手教你用免费代理ip爬数据

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧!

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

  1. json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?

    本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...

  2. python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...

    目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...

  3. python批量读取图片gps位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

    原标题:某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置! 1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和 ...

  4. python 批量读取csv_python批量读取csv文件

    请问大神怎样用python批量读取文件夹下的文件? python如何读取CSV文件一部分数据 Python如何批量读取CSV文件并写入TXT? 如何用python把多个csv文件数据处理后汇总到新cs ...

  5. 自动化神器啊,Python 批量读取身份证信息写入 Excel

    大家好,今天分享一个实用技能,利用 Python 批量读取身份证信息写入 Excel. 喜欢记得收藏.关注.点赞. 注:文末提供完整版代码.技术交流方式 读取 以图片形式的身份证为例,信息读取我们使用 ...

  6. python批量读取csv文件-Python读取/批量读取文件

    相信很多人的日常工作中,数据源除了来自数据库以外,其次就是外部文件,因此掌握读取文件的技能是相当必要的.在这里特此整理读取外部文件的方法,希望能有助你们快速解决问题.当然本文对读者的假设是有一定的py ...

  7. python批量读取csv文件-使用Python读写csv文件的三种方法

    行之间无空行十分重要,如果有空行或者数据集中行末有空格,读取数据时一般会出错,引发[list index out of range]错误.PS:已经被这个错误坑过很多次! 使用python I/O写入 ...

  8. python批量读取grib_windows python读取grib2数据

    一.环境准备 (1).python3环境 (3).wgirb2工具(用于读取grib2文件),下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2 二.环境测试 ...

  9. python批量读取文件夹的图片并处理成模型输入格式

    我们知道在训练图像模型时,需要从文件夹里读取图片. 这里演示下,怎样从文件夹里批量读取图片,并处理成我们想要的 x,y 即特征和标签. 输入维度理解 以卷积神经网络为例子. 我们知道卷积神经网络con ...

最新文章

  1. 为什么一定要杀掉病毒?---帮一位老师解决MyDocument.exe优盘文件夹图标病毒问题...
  2. 《jQuery Mobile入门经典》—— 2.7 练习
  3. sqlserver 穷举 排列 组合
  4. 函数使用了堆栈的字节超过_单片机地址空间,堆栈理解
  5. 锁的释放流程-ReentrantLock.unlock
  6. python数据统计代码_Python 数据的累加与统计的示例代码
  7. 第二篇 第一章建筑分类和耐火等级检查(二)
  8. java sftp 公开键设定_如何使用JSch SFTP库解析Java UnknownHostKey?
  9. ubuntu 给执行文件添加快捷方式
  10. Tensorflow源码编译
  11. ROS的学习(五)在工作空间中构建和使用catkin包
  12. Ubuntu下PDF编辑软件pdfedit
  13. 单片机仿真软件proteus8安装与使用
  14. openwrt 如何打patch补丁
  15. 电脑电话,怎么用电脑打电话
  16. 最易学和最难学编程语言排行榜!
  17. 操作系统排名服务器,服务器操作系统排行榜
  18. 读《软件测试经典教程》有感
  19. python用pandas读取excel_Python 中利用Pandas处理复杂的Excel数据
  20. 如何创建用户和组?怎样添加用户呢?windows dos命令

热门文章

  1. Python通过ip2region解析IP获得地域信息
  2. CG界知名的八大渲染引擎的分析
  3. flash与动画 人物动作动画
  4. 鞍钢的机会 攀钢的利好
  5. IviewUI form校验number类型有值却提示无效问题
  6. OO设计原则 -- OO设计的原则及设计过程的全面总结
  7. 关于大前端Serverless,这些大佬们释放了如此信号……
  8. 江苏校园舞男女生牵手用面巾纸隔开---至于吗
  9. display指定端口linux,Linux DISPLAY作用
  10. 穷举法求解鸡兔同笼问题