- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
看我用Python一秒发送数百份邮件,让财务部妹子追着喊666!
最近公司要发奖金,需要财务部妹子给每个员工发一封邮件,现在全公司 10 个部门每个人的奖金情况已经计算好了,并依据部门分别制造了 10 张表格:
每个奖金表格内容大致如下:
同时有一份 Excel 文件邮件地址.xlsx,里面有各部门担任人的邮箱:
首先第一个需求很简约:给各部门担任人发送相应部门的奖金附件
这个需求不同于群发,只需把全部人邮件地址加进来一键发送就可以,而是需要点对点的单发邮件。假如部门或者收件人的数量连续添加,无非会添加工作难度、降低工作效率,因而需要 Python 出手处理。
当然假如就这么点小事,妹子辛苦一点手动发送也能处理,下面还有一个需求??
原有部门奖金表格新添加了一列个人邮箱(邮箱地址均为虚构),如下
不同于上面需求,给部分担任人发送总奖金表格的同时,也需要给各部分每一个人发送本人的奖金金额,发送内容为:
“
敬重的xxx部门 xxx 您好,您的工号是 xxx,您2021年的奖金为 xxx
”
这个需求假如再手动的话,工作量霎时就上去了,下面我们讲解如何用Python优雅、快速的处理!
规律梳理
初级需求是一个点对点单独发送,简约的思路可以是:
“
逐行遍历 邮件地址.xlsx 取各部门名称和担任人邮箱地址
依据部门名称去 奖金发放 文件夹下猎取 奖金_部门名称.xlsx 作为附件
再遍历 邮件地址.xlsx的循环体内完成邮件的发送
”
假如加上了个人邮箱其实也很简约,在原先代码的基础上打开并遍历 奖金_部门名称.xlsx 文件,猎取每个人的工号、姓名、邮箱地址、奖金数,而部门在打开 Excel 时就确定了,最终依据上面猎取的信息用 yagmail 组装成新的邮件信息并发送
代码实现
先着手实现基本需求。由于只涉及 Excel 文件的读取以及邮件的发送,需要导入 openpyxl 的 load_workbook 方法以及 yagmail 库,假如不把密码(授权码)明文显示而存储在系统密钥环中则需要额外导入 keyring 库
from?openpyxl?import?load_workbookimport?yagmailimport?keyringpassword?=?keyring.get_password(yagmail,?username)#?需要在命令号中用?keyring.set_password(yagmail,?username,?password)?事后存好
读取并遍历 邮件地址.xlsx:
path?=?rC:\xxx?#?依据实际附件文件和邮件地址?Excel?文件存放的路径确定workbook?=?load_workbook(path?+?r\邮件地址.xlsx)sheet?=?workbook.activen?=?0?#?设置变量跳过表头for?row?in?sheet.rows:????if?n:????????department?=?row[0].value????????dep_address?=?row[1].value????????print(department,?dep_address)????n?+=?1
解析完成后就可以组装预备发送的邮件了。以用 QQ 邮箱发送邮件为例,复习一下组装邮件需要的内容:
#?用服务器、用户名、密码实例化邮件mail?=?yagmail.SMTP(user=xxx@,?password?=?password,?host=)?#?待发送的内容contents?=?[第一段内容,?其次段内容]#?发送邮件mail.send(收件人邮箱,?邮件标题,?contents)?
假如在 contents 中放确定路径,yagmail 会自动将其作为附件,格外智能。这也是本需求能实现的重要依托。
复习了这些学问点我们就可以完善上面的遍历代码
n?=?0for?row?in?sheet.rows:????if?n:????????department?=?row[0].value????????dep_address?=?row[1].value????????#?print(department,?dep_address)????????mail_dep?=?yagmail.SMTP(user=xxx@,?password=password,?host=)????????contents?=?[f您好,请查收{department}的奖金情况,?path?+?f\奖金发放\奖金_{department}]????????mail_dep.send(dep_address,?f{department}奖金情况,?cont
您可能关注的文档
最近下载
- DM.03 ×× U9 ERP项目-实施备忘-年月日.doc VIP
- DM.16.01 ××U9 ERP项目培训计划书.docx VIP
- DM.01 ×× U9 ERP项目-项目章程.pptx VIP
- 理论力学(第9版)(I)习题答案解析.pdf
- 公司片区经理竞聘演讲与公司物业半年工作总结合集.doc VIP
- DM.18 ×× U9 ERP项目-阶段汇报.pptx VIP
- 建筑结构抗震设计05(PPT81页).pptx VIP
- 【完整版】IATF16949-2016内审检查表(按过程方法编制).docx VIP
- 贸易公司的授信管理.pptx VIP
- 中国建筑第八工程局有限公司安全管理制度汇编 .doc VIP
原创力文档


文档评论(0)