Python实现定时自动发送邮件:从配置到Windows任务计划完整指南

温以宁
温以宁
发布时间:2026-10-14| 6人浏览过
原创

本文详解如何使用Python结合Windows任务计划实现定时自动发送邮件。涵盖163/QQ邮箱POP3/SMTP服务开启、授权码获取、Python smtplib模块代码编写,以及通过taskschd.msc配置定时任务的完整步骤,解决路径参数等常见坑点。

本文分享使用Python实现定时向指定邮箱发送报告的具体代码与配置方法,供读者参考实践。

应用场景与实验环境

典型应用场景为:传感器采集数据,经边缘端上传至数据库,产品端需定期生成报告并自动通过邮件发送至指定邮箱。自动发邮件过程中存在若干易错点,本文重点记录这些注意事项。实验环境为Python 3.7与Windows 10系统,发送方使用163邮箱,接收方使用QQ邮箱。

邮箱SMTP服务配置

第一步:申请两个邮箱账号,分别用于发送和接收邮件。本文示例中,发送方为163邮箱,接收方为QQ邮箱。

第一个关键注意事项:在QQ邮箱设置中,必须开启“POP3/SMTP服务”。若未开启,即使Python代码正确也无法发送邮件,因为Python发送邮件依赖SMTP协议。此外,若将该邮箱作为发送方,务必记录“授权码”,因为Python登录邮箱使用的是授权码而非登录密码。

同样地,在163邮箱设置中,也需要开启“POP3/SMTP服务”。

开启SMTP服务后,务必保存好生成的授权码,后续代码中将使用此授权码进行登录验证。

Python发送程序编写

第二步:使用Python编写发送邮件的程序代码。

核心代码解析


#发送邮件模块
import smtplib
#写邮件模块
import email
#定义邮件类型及内容
"""
邮件体为多组件类型(如果不是单一发送文本或者图片或者附件,那么就需要这个多组件类型将
其它元素打包进来)
"""
from email.mime.multipart import MIMEMultipart
#邮件中的文本信息
from email.mime.text import MIMEText
#邮件中的图片信息
from email.mime.image import MIMEImage
#定义邮件标题
from email.header import Header
#################################################################################################
#设置服务器所需信息
#邮件发送方邮箱地址
sender='写发送方邮箱地址,这里只是示意一下@163.com'
#这个是163邮箱里面POP3/SMTP开启后的授权码,一定注意不是163邮箱的登录密码
#第一次做的时候设置成邮箱登录密码反而邮件不能发送,改成授权码之后才可以
password='这里写授权码,注意不是邮箱登录密码,授权码一般是由随机的16位字母组成'
#邮件接收方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers=['写接收方邮箱地址,这里只是示意一下@qq.com']
###############################################################################################
#邮件基本信息输入
#设置总的邮件体对象,对象类型为mixed
mix_part=MIMEMultipart('mixed')
#发送者邮箱地址
mix_part['From']='写发送方邮箱地址,这里只是示意一下@163.com<写发送方邮箱地址,这里只是示意一下@163.com>'
#接收者邮箱地址
mix_part['To']='写接收方邮箱地址,这里只是示意一下@qq.com'
#邮件标题
subject='2020-5-21测试报告'
mix_part['subject']=Header(subject,'utf-8')
#################################################################################################
#构造文本内容,也就是邮件中正文部分的内容
"""
三个参数:
第一个为文本内容,第二个plain设置文本格式,第三个utf-8设置编码
"""
message_info='python邮件发送测试'
message=MIMEText(message_info,'plain','utf-8')
#通过多组件类型将文本内容打包进来
mix_part.attach(message)
###############################################################################################
#邮件中附件文本的构造
#设置附件文本的路径,除了改路径,其它几行代码基本不需要改动
txt_path=r'C:\Users\Desktop\测试文件.pdf'
txt_file = open(txt_path, 'rb').read()
txt = MIMEText(txt_file, 'base64', 'utf-8')
txt["Content-Type"] = 'application/octet-stream'
# 命名发送的附件名称
txt.add_header('Content-Disposition', 'attachment', filename='测试报告.pdf')
#通过多组件类型将文本附件打包进来
mix_part.attach(txt)
####################################################################################
# 邮件中图片附件的构造
#设置附件图片的路径,除了改路径,其它几行代码基本不需要改动
image_path=r'C:\Users\Desktop\images\test.png'
image_file = open(image_path, 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID', '<image1>')
#filename需要改成上传的图片名称
image["Content-Disposition"] = 'attachment; filename="test.png"'
#通过多组件类型将图片附件打包进来
mix_part.attach(image)
###################################################################################################
try:
 """
 qq邮箱服务器地址的设置,如果是用qq邮箱发邮件则需要设置,
 本文是用163邮箱发邮件,所以只需要设置163邮箱服务器地址即可
 """
 # smtpObj=smtplib.SMTP('smtp.exmail.qq.com')
 #163邮箱服务器地址的设置
 smtpObj = smtplib.SMTP('smtp.163.com')
 #登录:账号,密码
 smtpObj.login(sender,password)
 smtpObj.sendmail(sender,receivers,mix_part.as_string())
 smtpObj.quit()
 print('邮件发送成功')
except smtplib.SMTPException:
 print('Error:无法发送邮件')

Windows定时任务设置

第三步:在电脑系统中设置定时任务,以自动运行上述Python程序。

按下Win+R键打开运行窗口,输入taskschd.msc并回车,以打开Windows任务计划程序。

在任务计划程序中创建基本任务,按照向导提示逐步点击“下一步”即可完成基础配置。

根据需求选择触发器,例如“一次”,并设置任务启动的具体时间。




在“操作”步骤中,“程序或脚本”栏保持默认即可;“起始于(可选)”需填写Python解释器的安装路径;“添加参数(可选)”需填写刚才编写的自动发邮件脚本的完整路径。

确认所有设置无误后,点击“完成”即可保存任务。

关键注意事项总结

总结关键点如下:

(1)必须开启发送方和接收方邮箱的SMTP服务,并准确记录授权码。

(2)Python程序编写需按步骤进行,通常不会遇到大问题。

(3)在Windows中设置自动运行程序时,需特别注意“起始于”和“添加参数”两个路径字段的正确性。

以上为本文全部内容,希望能为读者提供有益帮助,欢迎继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。