背景
想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名、联系方式、邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后将Word邀请函模板生成Pdf格式,之后编辑统一的邀请话术(邮件正文),再依次发送邀请函附件到客户邮箱,你会怎么做?
正常情况下,我们肯定是复制粘贴Excel表格中的客户姓名,之后挨个Word文档进行替换,之后将Word转Pdf格式,然后复制Excel表格中的邮箱进行发送编辑好的邮件正常,之后附上邀请函附件,点击发送,大概算一下,激情高昂的状态下,这个流程快的话,大概需要1分钟甚至更多。如果客户只有几十个就还好,一个小时就可以搞定,如果客户有几百个,上千个,甚至上万个呢?那估计要哭晕在办公室了。
不过别慌,Python自动化办公,一套组合拳,使用Python自动化办公——Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送一条龙服务安排,下面一起来看看吧!
实现过程
1)替换Word模板生成对应邀请函
这里以上面的Word模板做案例,编写一个函数以客户姓名进行替换模板中的,一步到位。
def get_invitation(name):
doc = docx.Document("template.docx")
for para in doc.paragraphs:
if '<name>' in para.text:
for run in para.runs:
if '<name>' in run.text:
runrun.text = run.text.replace('<name>', name)
doc.save(f'./邀请函/{name}.docx')
上面这个代码需要理解Word文档的结构,一个文档有多个段落,用doc.paragraphs获取;段落中的文字用para.text获取;一个段落中可能有多个不同样式的文本,这些不同的样式被称为run,一个段落中包含多个run,用para.runs获取,一个run中的具体文本用run.text获取。了解了这些,再看上述代码,是不是清晰很多呢?
2)将Word邀请函转化为Pdf格式
这个就简单很多了,Python自动化办公中,一行代码就可以实现,而且速度还十分快。
from docx2pdf import convert
convert(f"./邀请函/{name}.docx")
使用convert()函数可以把docx格式的文件转换成同名的Pdf文档。
3)读取Excel表格中的姓名和邮箱
这里需要用到openpyxl库了,当然关于Excel的库还是很多的,这里以这个库作为示例,代码如下:
def get_username_email():
workbook = openpyxl.load_workbook("names.xlsx")
worksheet = workbook.active
for index, row in enumerate(worksheet.rows):
if index > 0:
name = row[0].value # 获取表格第一列的姓名
email = row[3].value # 获取表格第四列的邮箱
# print(name, email)
# print(f"{name}邀请函正在生成...")
# get_invitation(name)
send_email(name, email)
上面的代码,理解起来应该并不难,读取Excel中的姓名和邮箱,之后传到get_invitation()生成邀请函,之后传给send_email()函数中自动发送邮件。实际上,这两部是分开进行的,这里是先执行get_invitation()函数,先生成邀请函,之后再将该函数注释掉,再执行发送邮件函数,
4)自动发送邮件
关于自动发送邮件,历史文章中也曾经发布过好几篇了,这里继续用上了,一开始我也觉得挺难的,后来发现也没有想的那么复杂,代码如下:
smtp = smtplib.SMTP(host="smtp.qq.com", port=587)
# smtp.login(邮箱, 授权码)
smtp.login('235977@qq.com', "ruybefkipoo")
def send_email(name, email):
msg = MIMEMultipart()
msg["subject"] = f"您好,{name},您的邀请函!"
msg["from"] = "2352180977@qq.com"
msg["to"] = email
html_content = f"""
<html>
<body>
<p>您好:{name}<br>
<b>欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~</b><br>
点击这里了解更多:<a href="https://www.pdcfighting.com">演唱会主页</a>
</p>
</body>
</html>
"""
html_part = MIMEText(html_content, "html")
msg.attach(html_part)
with open(f"./邀请函/{name}.pdf", "rb") as f:
doc_part = MIMEApplication(f.read())
doc_part.add_header("Content-Disposition", "attachment", filename=name)
# 把附件添加到邮件中
msg.attach(doc_part)
# 发送前面准备好的邮件
smtp.send_message(msg)
# 如果放到外边登录,这里就不用退出服务器连接,所以注释掉了
# smtp.quit()
这里需要注意三点,其一是邮箱登录放在了函数外边,防止函数多次调用,短时间多次请求登录邮箱被封禁;其二邮箱登录里边用的是授权码,而不是你的邮箱登录密码,这里使用的是qq邮箱做示例,其他邮箱需要更改smtp服务;其三这个代码里边除了正文中引用了html写法,还携带了Pdf格式的邀请函附件,稍显复杂。
5)完整代码
以上四个步骤进行拆分了,依次完成了Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送任务,这里附上完整的代码。
import docx
from docx2pdf import convert
import openpyxl
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
# 生成对应的邀请函,并转存pdf格式
def get_invitation(name):
doc = docx.Document("template.docx")
for para in doc.paragraphs:
if '<name>' in para.text:
for run in para.runs:
if '<name>' in run.text:
runrun.text = run.text.replace('<name>', name)
doc.save(f'./邀请函/{name}.docx')
convert(f"./邀请函/{name}.docx")
smtp = smtplib.SMTP(host="smtp.qq.com", port=587)
smtp.login('235977@qq.com', "ruybefkipoo")
def send_email(name, email):
msg = MIMEMultipart()
msg["subject"] = f"您好,{name},您的邀请函!"
msg["from"] = "2352180977@qq.com"
msg["to"] = email
html_content = f"""
<html>
<body>
<p>您好:{name}<br>
<b>欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~</b><br>
点击这里了解更多:<a href="https://www.pdcfighting.com">演唱会主页</a>
</p>
</body>
</html>
"""
html_part = MIMEText(html_content, "html")
msg.attach(html_part)
with open(f"./邀请函/{name}.pdf", "rb") as f:
doc_part = MIMEApplication(f.read())
doc_part.add_header("Content-Disposition", "attachment", filename=name)
# 把附件添加到邮件中
msg.attach(doc_part)
# 发送前面准备好的邮件
smtp.send_message(msg)
# 如果放到外边登录,这里就不用退出服务器连接,所以注释掉了
# smtp.quit()
def get_username_email():
workbook = openpyxl.load_workbook("names.xlsx")
worksheet = workbook.active
for index, row in enumerate(worksheet.rows):
if index > 0:
name = row[0].value
email = row[3].value
# print(name, email)
# print(f"{name}邀请函正在生成...")
# get_invitation(name)
send_email(name, email)
if __name__ == '__main__':
get_username_email()
# get_invitation('Python进阶者')
总结
这篇文章基于Python自动化办公,主要介绍了使用Python相关库,依次完成Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送任务。程序运行之后,邀请函会自动生成,然后邮件会自动发送,速度也非常快,给几百个、上千个客户发送邀请函就不害怕了,如果有上万个客户,可能需要借助第三方平台辅助了,毕竟一般的普通邮箱,每日发送邮箱数是有限制的。
python系统学习资源
一、Python学习路线汇总
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末!!!!
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试刷题
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码【100%免费获取】
今天的文章python自动批量发邮件脚本_python办公自动化能干啥分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83853.html