大家好,我是是编程秋枫
之前有分享过如何用Python发送邮件的文章,今天再分享一个如何用几行Python代码让财务部妹子追着喊666的实用案例。
喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!

需求描述
最近公司要发奖金,需要财务部妹子给每个员工发一封邮件,现在全公司 10 个部门每个人的奖金情况已经计算好了,并根据部门分别制作了 10 张表格:
每个奖金表格内容大致如下:

同时有一份 Excel 文件邮件地址.xlsx,里面有各部门负责人的邮箱:

首先第一个需求很简单:给各部门负责人发送相应部门的奖金附件

这个需求不同于群发,只要把所有人邮件地址加进来一键发送就可以,而是需要点对点的单发邮件。如果部门或者收件人的数量继续增加,无非会增加工作难度、降低工作效率,因此需要 Python 出手解决。
喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!

当然如果就这么点小事,妹子辛苦一点手动发送也能解决,下面还有一个需求

原有部门奖金表格新增加了一列个人邮箱(邮箱地址均为虚构),如下

不同于上面需求,给部分负责人发送总奖金表格的同时,也需要给各部分每一个人发送自己的奖金金额,发送内容为:

尊敬的xxx部门 xxx 您好,您的工号是 xxx,您2020年的奖金为 xxx

这个需求如果再手动的话,工作量瞬间就上去了,下面我们讲解如何用Python优雅、快速的解决!
喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!

逻辑梳理
初级需求是一个点对点单独发送,简单的思路可以是:

逐行遍历 邮件地址.xlsx 取各部门名称和负责人邮箱地址

根据部门名称去 奖金发放 文件夹下获取 奖金_部门名称.xlsx 作为附件

再遍历 邮件地址.xlsx的循环体内完成邮件的发送

如果加上了个人邮箱其实也很简单,在原先代码的基础上打开并遍历 奖金_部门名称.xlsx 文件,获取每个人的工号、姓名、邮箱地址、奖金数,而部门在打开 Excel 时就确定了,最后根据上面获取的信息用 yagmail 组装成新的邮件信息并发送

代码实现
先着手实现基本需求。由于只涉及 Excel 文件的读取以及邮件的发送,需要导入 openpyxl 的 load_workbook 方法以及 yagmail 库,如果不把密码(授权码)明文显示而存储在系统密钥环中则需要额外导入 keyring 库

读取并遍历 邮件地址.xlsx:


解析完成后就可以组装准备发送的邮件了。以用 QQ 邮箱发送邮件为例,复习一下组装邮件需要的内容:

如果在 contents 中放绝对路径,yagmail 会自动将其作为附件,非常智能。这也是本需求能实现的重要依托。

复习了这些知识点我们就可以完善上面的遍历代码

基本需求完成后,就考虑升级的需求

两个需求衔接的关键在于确定好给哪个部门的负责人发邮件时,就打开这个部门的奖金情况表,先给部门成员一一发文字邮件,最后给部门负责人发附件。

如果梳理清楚这一环,那么循环的嵌套关系就很明确了:

因本文的邮箱都是虚构的,就不展示具体发送成功的效果了。

至此,短短30余行代码就成功安抚了妹子交集的心态,并约个饭希望好好聊一聊如何用Python偷懒,这些就不再分享了喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!

看我用Python一秒发数百份邮件,让财务部妹子追着喊6相关推荐

  1. python 美化ppt_看我用Python瞬间制作数百份PPT,赢得小姐姐的下午茶

    大家好,我是早起. 今天继续分享Python办公自动化真实案例,本文是一个基于Python+Excel+PPT的应用,看我如何用一段代码安抚焦虑的小姐姐,赢得妹子的下午茶.先看看她的需求

  2. 投递大厂简历有哪些坑,乔戈里筛了数百份简历,总结出了这些。

    前言 最近乔戈里负责收集校招实习简历和筛选校招实习简历安排面试官面试,同时乔戈里旁边的同事还在面试,同事面试完了还会写面试评价表:不论过和没过都会写评价表,再加上和同事之间的聊天,乔戈里摸出了不少简历 ...

  3. 我用nodejs给朋友发了一份邮件

    我用nodejs给朋友发送了一封邮件 配置 node 需要电脑上有node.js(官网下载即可) 需要用到nodemailer // 1. 配置环境 npm init npm install node ...

  4. 韩国韩亚航空数万份乘客身份信息被泄露

    韩国第二大航空公司-韩亚航空公司(Asiana Airlines)日前公开承认有部分乘客数据被攻击破坏,目前正在调查数据泄露事件的发生原因.据外媒报道,此数据泄露案有数万份航亚乘客文件被公布至 网络, ...

  5. 使用Python,OpenCV线程化方式提高视频FPS(每秒帧数)

    使用Python,OpenCV处理视频流时,获得更高FPS(Frams Per Second)的"秘密"是将I / O(即从摄像机传感器读取帧)交给线程去处理: 读取帧 I/O是阻 ...

  6. python判断回文_用python判断回文数

    信息举报 时间:2020-11-23 本页为您甄选多篇描写用python判断回文数,用python判断回文数精选,用python判断回文数大全,有议论,叙事 ,想象等形式.文章字数有400字.600字 ...

  7. python入门学习[看漫画学Python:有趣、有料、好玩、好用读书笔记]

    写在前面:本文中绝大多数图片来源于图书:看漫画学Python:有趣.有料.好玩.好用,本文仅供个人学习使用,如有侵权,请联系删除. 学习编程语言最好的方式就是多写,多写,多写!!!哪有什么快速掌握,能 ...

  8. 【云周刊】第124期:实时计算来临!阿里新一代实时计算引擎 Blink,每秒支持数十亿次计算

    摘要: 每秒支持数十亿次计算的计算引擎长啥样?阿里下一代数据库技术爆料!把数据库装入容器不再是神话!马云.阿里云和"云上贵州"又有着怎样的故事--更多精彩技术资讯,下滑查看吧! 本 ...

  9. 【云周刊】第124期:实时计算来临!阿里新一代实时计算引擎 Blink,每秒支持数十亿次计算...

    摘要: 每秒支持数十亿次计算的计算引擎长啥样?阿里下一代数据库技术爆料!把数据库装入容器不再是神话!马云.阿里云和"云上贵州"又有着怎样的故事--更多精彩技术资讯,下滑查看吧! 本 ...

最新文章

  1. SortedDictionaryTKey, TValue 类 表示根据键进行排序的键/值对的集合。
  2. FreeRtos osMessagePut osMessageGet 函数
  3. 从0到1 构建实时音视频引擎
  4. 矩阵存储 oracle表,二种矩阵存储方式汇总比较
  5. 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)
  6. 倒计时 4 天!年度开发者盛会 Unite Shanghai 2019 全日程揭晓(附表)
  7. 禁用vsftpd欢迎语
  8. 已知直角三角形的周长,求可以构成三角形的情况
  9. 5G及移动边缘计算(MEC)
  10. 如何编译生成dll文件以及如何调用dll文件
  11. 笔记本使用的几大盲区
  12. 左岸读书-知识分子的典型
  13. 论坛看到的很有感触的问答
  14. 1分钟彻底搞懂关于nginx的proxy_pass
  15. Vue3实现中英文切换
  16. ftp上传文件时出现 550 Permission denied,不是用户权限问题
  17. 常用Pandas读取excel(或txt)部分行列并输出
  18. 数码科技分享_路由器01————TP-LINK AC1900无线桥接:没用的路由器千万别扔掉,它还可以当你的WiFi放大器
  19. 《面向对象程序设计》课程设计报告
  20. 如何快速搭建自己的云桌面和云办公服务器软件系统

热门文章

  1. 【算法Algorithm】快速(Quick)排序
  2. Linux操作系统常见命令
  3. 没有未桥接的主机网络适配器
  4. 腾讯云OCR(印刷体识别) API使用
  5. guess在Java中用法_猜一猜,guess有哪些用法?
  6. Hadoop web端打开hdfs上的文件问题
  7. DTMF信号系统的Matlab仿真
  8. 影子系统详细内容最强大全
  9. java导入xmind的坑及解决方案
  10. Centos 显示隐藏文件