Python发送邮件脚本:三步搞定自动发邮件,办公效率翻倍

每天要给客户发报价单、给同事群发会议提醒、定时给领导汇报项目进度?手动点鼠标太费劲。其实用几行Python代码,就能让电脑替你准时发邮件——不用打开Outlook,不依赖网页,连着网就能跑。

先装个轮子:smtplib + email

Python自带这两个模块,不用额外安装。smtplib负责‘寄信’,email负责‘写信封+装信’。重点不是多高深,而是够用、稳定、不卡壳。

最简可用版(Gmail示例)

假设你用的是Gmail账号,开启SMTP服务(在Gmail设置→账户和导入→其他Google服务→开启‘允许不够安全的应用’,或更推荐用应用专用密码),把下面代码复制保存为 send_mail.py,改掉邮箱和密码,双击就能跑:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 配置发件人信息
sender = 'your_email@gmail.com'
password = 'your_app_password'  # 不是登录密码,是Gmail生成的应用专用密码
receiver = 'target@company.com'

# 构建邮件内容
msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = '每日数据报告已生成'

body = 'Hi,今日销售数据已汇总完毕,请查收附件。'
msg.attach(MIMEText(body, 'plain'))

# 发送
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender, password)
server.send_message(msg)
server.quit()

print('邮件已发出')

换成企业邮箱?只改两行

比如公司用腾讯企业邮箱,把 SMTP 服务器和端口换掉就行:
server = smtplib.SMTP('smtp.exmail.qq.com', 465)
再把 server.starttls() 换成 server = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465) —— 其他一行不动,照样能用。

加个附件?多加三行

财务每月要发Excel报表?在上面代码的 msg.attach(...) 后面补上:

from email.mime.base import MIMEBase
from email import encoders

with open('report.xlsx', 'rb') as f:
    part = MIMEBase('application', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename=report.xlsx')
msg.attach(part)

想每天8点自动发?配个Windows计划任务

右键‘此电脑’→管理→任务计划程序→创建基本任务,选‘每天’,触发器设成8:00,操作选‘启动程序’,程序填 python.exe,参数填你的脚本完整路径,比如:
C:\Users\Admin\Desktop\send_mail.py
别忘了在‘常规’选项卡里勾选‘不管用户是否登录都要运行’和‘使用最高权限运行’。