运维侠职场日记14:用DeepSeek三天通关手把手教你不会Python也能学!用5行代码批量群发工作邮件(附完整源码)!

一. 导引

运维侠想要自动发送邮件,发送Excel表格或者图片,于是他又去问了deepseek!!!开心呀,终于实现了…

在这里插入图片描述

在这里插入图片描述

deepseek的回答

在这里插入图片描述

二.运维侠的代码演示:

⚠️避坑指南(血泪经验总结)

  1. 提前检查有没有需要安装的模块如果没,执行:pip install smtplib
  2. 附件乱码问题:统一使用utf-8编码
  3. 被识别为垃圾邮件:控制发送频率,添加退订链接
  4. 大附件发送失败:压缩、切割
  5. 连接超时处理:增加重试机制
  6. 需要先测试:deepseek给的代码不一定每次都可用,运维侠已经帮您踩过坑了。

⏰提示:先创建所需Excel表格

在这里插入图片描述

(1)读取Excel数据,发送简单文字邮件

💻 代码:第一步:读取Excel中的邮箱地址

# 安装库:pip install openpyxl
import openpyxl
import smtplib
from email.mime.text import MIMEText

# 步骤1:读取Excel中的邮箱地址(测试用表)
wb = openpyxl.load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\contacts.xlsx')
sheet = wb.active
emails = [cell.value for cell in sheet['B'][1:] if cell.value]  # 跳过标题行
print(emails)

执行代码效果:
在这里插入图片描述

(2)配置邮件参数

💻 代码:

# ====== 配置区(必须修改)=======
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
SENDER = '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)精简版批量发送邮件

💻 代码:

import openpyxl
import smtplib
from email.mime.text import MIMEText
import time

# ====== 配置区(必须修改)=======
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.value for cell in sheet['B'][1:] if cell.value]

# 创建邮件内容
msg = MIMEText('您的测试邮件正文内容', 'plain', 'utf-8')
msg['From'] = SENDER
msg['Subject'] = 'Python自动发送测试'


# 发送循环
for email in emails:
    try:
        with smtplib.SMTP_SSL(EMAIL_HOST, EMAIL_PORT) as server:
            server.login(SENDER, PASSWORD)  # 关键认证点
            server.sendmail(SENDER, email, msg.as_string())
            server.quit()
        print(f"✅ 成功发送至 {email}")
        time.sleep(3)
    except Exception as e:
        print(f"❌ 发送到 {email} 失败:{str(e)}")

执行代码效果:
在这里插入图片描述

(4)豪华版批量发送邮件

💻 代码:适用于发送各类附件,并带有进度提示

# 安装所需库:pip install openpyxl
import openpyxl
import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.header import Header  # 修正导入方式
import time

# ====== 配置区(必须修改)=======
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
SENDER = '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文件路径
]


# =============================

def create_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'))

    # 添加多个附件
    for file_path in ATTACH_FILES:
        if not os.path.exists(file_path):
            print(f"⚠️ 附件不存在:{file_path}")
            continue

        with open(file_path, 'rb') as f:
            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)

    return msg


# 读取收件人列表(保持不变)
try:
    wb = openpyxl.load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\contacts.xlsx')
    sheet = wb.active
    emails = [cell.value for cell in sheet['B'][1:] if cell.value]
    print(f"成功读取 {len(emails)} 个收件人")
except Exception as e:
    print("❌ Excel读取失败:", str(e))
    exit()

# 发送邮件(增加进度显示)
total = len(emails)
for index, email in enumerate(emails, 1):
    try:
        msg = create_email()
        msg['To'] = Header(f'收件人 <{email}>', 'utf-8')  # 优化收件人显示

        with smtplib.SMTP_SSL(EMAIL_HOST, EMAIL_PORT) as server:
            server.login(SENDER, PASSWORD)
            server.sendmail(SENDER, email, msg.as_string())

        print(f"✅ 进度:{index}/{total} | 发送成功")
        time.sleep(5)

    except Exception as e:
        print(f"❌ 第 {index} 封失败:{str(e)}")
        continue

print("👉 任务完成!成功发送:{} 封,失败:{} 封".format(
    total - len([e for e in emails if "失败" in e]),
    len([e for e in emails if "失败" in e])
))




执行代码效果:

在这里插入图片描述
⏰提示:可能会有误报的失败提示进度,不影响结果。因为延时等问题,需要多等一些时间。

在这里插入图片描述

三.注意事项

⏰提示:deepseek有时候给的代码不一定适合需要,所以要自己不断实践并总结,并且要注意问deepseek的话术模版。一种需求可以有多种类型代码实现,实际中,我们可以从中选择,最适合的。

💡开启你的效率革命
掌握自动化邮件技能后,你可以:

  1. 每天节省1小时处理时间

  2. 实现精准定时推送

  3. 轻松处理大批量发送任务

  4. 成为办公室效率达人

💡下期预告:《Python+Excel自动化:3小时完成全天工作》即将发布,点击关注不迷路!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术职场教练

您的是我坚持原创免费作品的不懈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值