lmomfe

导航

 

一、职场场景

每日发送工作报表、每周推送工作总结、批量发送员工通知、客户邮件推送,重复且固定。本文基于Python内置smtplib库,无需额外复杂配置,实现单邮件发送、带附件发送、批量群发、自定义邮件模板,适配企业邮箱、QQ邮箱、163邮箱。

二、前置准备

1、开启邮箱SMTP服务(QQ邮箱/163邮箱在设置中开启);
2、获取邮箱授权码(替代登录密码,用于代码登录);
3、无需安装第三方库,Python内置模块直接使用。

三、三大邮件实战场景

1. 发送纯文本邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 邮箱配置
sender = "你的邮箱@qq.com"
auth_code = "你的邮箱授权码"
receiver = "接收人邮箱@qq.com"

# 邮件内容
msg = MIMEText("各位同事,今日工作报表已更新,请查收!", "plain", "utf-8")
msg["From"] = Header("职场自动化助手")
msg["To"] = Header("办公人员")
msg["Subject"] = Header("今日工作报表推送")

# 连接服务器发送邮件
try:
    smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
    smtp.login(sender, auth_code)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
    print("邮件发送成功!")
except Exception as e:
    print(f"发送失败:{e}")

2. 发送带附件邮件(Excel/Word/PDF)

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

sender = "你的邮箱@qq.com"
auth_code = "你的授权码"
receiver = "接收邮箱@qq.com"

# 构建邮件主体
msg = MIMEMultipart()
msg["From"] = Header("报表自动推送系统")
msg["To"] = Header("部门全员")
msg["Subject"] = Header("2026年7月月度报表(附件)")

# 邮件正文
text = MIMEText("您好,本月月度统计报表已生成,详见附件,请查收!", "plain", "utf-8")
msg.attach(text)

# 添加Excel附件
with open("月度数据总汇总.xlsx", "rb") as f:
    attach = MIMEApplication(f.read(), _subtype="xlsx")
    attach.add_header("Content-Disposition", "attachment", filename="月度报表.xlsx")
    msg.attach(attach)

# 发送邮件
smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
smtp.login(sender, auth_code)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print("带附件邮件发送成功!")

3. 批量群发多人邮件

# 批量接收人邮箱列表
receiver_list = [
    "员工1@qq.com",
    "员工2@163.com",
    "员工3@qq.com"
]

# 遍历批量发送
for receiver in receiver_list:
    try:
        smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
        smtp.login(sender, auth_code)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
        print(f"{receiver} 邮件发送成功")
    except Exception as e:
        print(f"{receiver} 发送失败:{e}")

四、企业级优化与避坑

1、企业邮箱修改SMTP服务器地址即可适配;
2、禁止明文存储授权码,正式场景可配置环境变量;
3、添加异常捕获,避免单个邮箱发送失败导致整体中断。

下篇预告

下一篇讲解Python定时任务,实现报表自动生成+自动邮件推送全流程自动化。
标签:Python、邮件自动化、职场工具、批量推送、原创
posted on 2026-07-20 20:28  lmomfe  阅读(4)  评论(0)    收藏  举报