运维侠职场日记14:用DeepSeek三天通关手把手教你不会Python也能学!用5行代码批量群发工作邮件(附完整源码)!
一. 导引
运维侠想要自动发送邮件,发送Excel表格或者图片,于是他又去问了deepseek!!!开心呀,终于实现了…
deepseek的回答
二.运维侠的代码演示:
⚠️避坑指南(血泪经验总结)
- 提前检查有没有需要安装的模块如果没,执行:pip install smtplib
- 附件乱码问题:统一使用utf-8编码
- 被识别为垃圾邮件:控制发送频率,添加退订链接
- 大附件发送失败:压缩、切割
- 连接超时处理:增加重试机制
- 需要先测试:deepseek给的代码不一定每次都可用,运维侠已经帮您踩过坑了。
⏰提示:先创建所需Excel表格
(1)读取Excel数据,发送简单文字邮件
💻 代码:第一步:读取Excel中的邮箱地址
# 安装库:pip install openpyxlimportopenpyxlimportsmtplibfromemail.mime.textimportMIMEText# 步骤1:读取Excel中的邮箱地址(测试用表)wb=openpyxl.load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\contacts.xlsx')sheet=wb.active emails=[cell.valueforcellinsheet['B'][1:]ifcell.value]# 跳过标题行print(emails)执行代码效果:
(2)配置邮件参数
💻 代码:
# ====== 配置区(必须修改)=======EMAIL_HOST='smtp.qq.com'EMAIL_PORT=465SENDER='xxxxxxxx@qq.com'PASSWORD='xxxxxxxxxxxxx'# 授权码不是登录密码ATTACH_FILES=[r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\[赵老师]mysql主从复制实施文档.docx',# Word文档路径r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\其他\老球的Excel.zip',# 压缩包r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\3单篇文章分析-关注数0.xlsx'# Excel文件路径]# =============================(3)精简版批量发送邮件
💻 代码:
importopenpyxlimportsmtplibfromemail.mime.textimportMIMETextimporttime# ====== 配置区(必须修改)=======EMAIL_HOST='smtp.qq.com'# 服务器地址EMAIL_PORT=465# 端口SENDER='xxxxxxx@qq.com'# 发件邮箱PASSWORD='xxxxxxxx'# 授权码(不是密码!)# =============================# 读取Excel(测试文件)wb=openpyxl.load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\contacts.xlsx')sheet=wb.active emails=[cell.valueforcellinsheet['B'][1:]ifcell.value]# 创建邮件内容msg=MIMEText('您的测试邮件正文内容','plain','utf-8')msg['From']=SENDER msg['Subject']='Python自动发送测试'# 发送循环foremailinemails:try:withsmtplib.SMTP_SSL(EMAIL_HOST,EMAIL_PORT)asserver:server.login(SENDER,PASSWORD)# 关键认证点server.sendmail(SENDER,email,msg.as_string())server.quit()print(f"✅ 成功发送至{email}")time.sleep(3)exceptExceptionase:print(f"❌ 发送到{email}失败:{str(e)}")执行代码效果:
(4)批量发送文档及压缩包邮件
💻 代码:适用于发送各类附件,并带有进度提示
# 安装所需库:pip install openpyxlimportopenpyxlimportsmtplibimportosfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.mime.applicationimportMIMEApplicationfromemail.headerimportHeader# 修正导入方式importtime# ====== 配置区(必须修改)=======EMAIL_HOST='smtp.qq.com'EMAIL_PORT=465SENDER='xxxxxx@qq.com'PASSWORD='xixxxxxxxxx'# 授权码非登录密码ATTACH_FILES=[r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\[赵老师]mysql主从复制实施文档.docx',# Word文档路径r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\其他\老球的Excel.zip',# 压缩包r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\3单篇文章分析-关注数0.xlsx'# Excel文件路径]# =============================defcreate_email():"""创建带附件的邮件对象"""msg=MIMEMultipart()msg['From']=SENDER msg['Subject']=Header('某某项目合同资料,请查收工作文档','utf-8')# 中文主题编码# HTML正文内容body=''' <p>您好:</p> <p style="text-indent: 2em;">已发送最新工作文档,请查收附件内容。</p> <p style="color: #666; margin-top: 20px;">本邮件由Python自动发送,请勿直接回复</p> '''msg.attach(MIMEText(body,'html','utf-8'))# 添加多个附件forfile_pathinATTACH_FILES:ifnotos.path.exists(file_path):print(f"⚠️ 附件不存在:{file_path}")continuewithopen(file_path,'rb')asf:file_data=f.read()basename=os.path.basename(file_path)attach=MIMEApplication(file_data)# 修正编码方式(核心修复点)filename_header=Header(basename,'utf-8').encode()attach.add_header('Content-Disposition','attachment',filename=filename_header)msg.attach(attach)returnmsg# 读取收件人列表(保持不变)try:wb=openpyxl.load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\contacts.xlsx')sheet=wb.active emails=[cell.valueforcellinsheet['B'][1:]ifcell.value]print(f"成功读取{len(emails)}个收件人")exceptExceptionase:print("❌ Excel读取失败:",str(e))exit()# 发送邮件(增加进度显示)total=len(emails)forindex,emailinenumerate(emails,1):try:msg=create_email()msg['To']=Header(f'收件人 <{email}>','utf-8')# 优化收件人显示withsmtplib.SMTP_SSL(EMAIL_HOST,EMAIL_PORT)asserver:server.login(SENDER,PASSWORD)server.sendmail(SENDER,email,msg.as_string())print(f"✅ 进度:{index}/{total}| 发送成功")time.sleep(5)exceptExceptionase:print(f"❌ 第{index}封失败:{str(e)}")continueprint("👉 任务完成!成功发送:{} 封,失败:{} 封".format(total-len([eforeinemailsif"失败"ine]),len([eforeinemailsif"失败"ine])))执行代码效果:
⏰提示:可能会有误报的失败提示进度,不影响结果。因为延时等问题,需要多等一些时间。
三.注意事项
⏰提示:deepseek有时候给的代码不一定适合需要,所以要自己不断实践并总结,并且要注意问deepseek的话术模版。一种需求可以有多种类型代码实现,实际中,我们可以从中选择,最适合的。
💡开启你的效率革命
掌握自动化邮件技能后,你可以:
每天节省1小时处理时间
实现精准定时推送
轻松处理大批量发送任务
成为办公室效率达人
💡下期预告:《Python+Excel自动化:3小时完成全天工作》即将发布,点击关注不迷路!