这里需要用到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"“”
您好:{name}
欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~
点击这里了解更多:演唱会主页
“”"
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 ‘’ in para.text:
for run in para.runs:
if ‘’ in run.text:
runrun.text = run.text.replace(‘’, 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
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
4bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算