在Windows中用Python脚本自动发邮件需配置SMTP参数、构造MIME消息并调用smtplib,依赖Python 3.7+环境,163邮箱用授权码和smtp.163.com:25,需处理连接、认证及编码错误,可添加附件并用任务计划程序定时执行。

在Windows系统中用Python编写脚本自动发送邮件,需配置SMTP服务器参数、构造邮件内容并调用smtplib模块完成投递,整个过程不依赖第三方GUI工具,纯命令行执行即可生效。
安装并验证Python环境
打开CMD或PowerShell,输入 python --version 确认已安装Python 3.7及以上版本;若提示“不是内部或外部命令”,需先到python.org下载安装包,勾选“Add Python to PATH”再安装。
这一步不可跳过,【缺少Python环境会导致后续所有代码无法运行】。
编写基础发信脚本
用记事本或VS Code新建一个 .py 文件(例如 send_mail.py),粘贴以下代码:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['From'] = 'your_email@163.com'
msg['To'] = 'receiver@domain.com'
msg['Subject'] = '测试邮件'
body = '这是通过Python脚本自动发送的邮件内容。'
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.163.com', 25)
server.starttls()
server.login('your_email@163.com', 'your_app_password')
server.send_message(msg)
server.quit()
注意:163邮箱必须使用“授权码”而非登录密码,授权码需在邮箱网页端“设置→POP3/SMTP/IMAP”中开启并生成;QQ邮箱则用smtp.qq.com:587 + 授权码;Gmail需开启两步验证并生成应用专用密码。
处理常见报错
方法一:ConnectionRefusedError 或 timeout
检查防火墙是否拦截了出站连接,临时关闭防火墙再试;确认SMTP地址和端口匹配——163用25或465(SSL),QQ用587(TLS)或465(SSL),不能混用。
方法二:SMTPAuthenticationError
立即核对邮箱账号是否拼写错误,【授权码是否复制完整、有无多余空格】;部分邮箱(如Outlook)要求先用网页登录一次再启用SMTP。
方法三:UnicodeEncodeError
在脚本首行添加 # -*- coding: utf-8 -*-,并在 msg['Subject'] 赋值前加一句 msg['Subject'] = Header('中文标题', 'utf-8'),需提前 from email.header import Header。
添加附件并定时执行
第一步:在 msg.attach() 前插入以下代码段
with open('report.pdf', 'rb') as f:
att = MIMEApplication(f.read())
att.add_header('Content-Disposition', 'attachment', filename='report.pdf')
msg.attach(att)
第二步:保存脚本后,在CMD中运行 python send_mail.py 测试是否成功发送。
第三步:按 Win+R 输入 taskschd.msc 打开任务计划程序→创建基本任务→设置触发器(如每天上午9点)→操作选择“启动程序”,程序路径填 python.exe 的绝对路径(如 C:\Users\Name\AppData\Local\Programs\Python\Python311\python.exe),参数填脚本完整路径(如 D:\scripts\send_mail.py)。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











