Python自动化发送邮件实战:从构建到SMTP配置详解
本文详解Python中利用smtplib和email模块实现邮件自动化的完整流程。涵盖纯文本、HTML及带附件邮件的构建方法,包括MIMEText与MIMEMultipart的使用。以QQ邮箱为例,演示开启SMTP、生成授权码及发送代码,并介绍基于磁盘监控的自动化场景,帮助开发者快速掌握邮件发送技术。
Python邮件自动化核心模块介绍
在Python环境中,实现邮件自动化操作主要依赖两个核心模块。
- smtplib
smtplib模块封装了SMTP协议,专门负责邮件的发送传输;而email模块则用于构建邮件内容,支持生成三种类型的邮件格式。
- 纯文本邮件
- HTML格式邮件
- 包含附件的邮件
邮件内容构建方法:纯文本、HTML与附件
构建邮件时,需明确指定发件人、收件人、主题及正文等关键信息。以最基础的纯文本邮件为例,其构建逻辑如下。
>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> subject = '主题'
>>> message = MIMEText('正文', 'plain', 'utf-8')
>>> message['From'] = Header("发件人", 'utf-8')
>>> message['To'] = Header("收件人", 'utf-8')
>>> message['Subject'] = Header(subject, 'utf-8')
使用MIMEText方法创建邮件对象,第一个参数传入邮件正文内容,第二个参数指定格式为'plain'表示纯文本,第三个参数设定编码方式为utf-8。随后,通过设置From、To和Subject属性,分别定义发件人、收件人地址及邮件主题。
若需发送HTML格式邮件,仅需将MIMEText的第二个参数改为'html',具体用法参考以下示例。
>>> msg = '<p>正文</p>'
>>> message = MIMEText(msg, 'html', 'utf-8')
对于需要携带附件的邮件,应使用MIMEMultipart类来创建邮件对象,具体实现方式如下。
>>> from email.mime.multipart import MIMEMultipart
>>> message = MIMEMultipart()
>>> message.attach(MIMEText('正文', 'plain', 'utf-8'))
>>> attach = MIMEText(open('input.txt', 'rb').read(), 'base64', 'utf-8')
>>> attach["Content-Type"] = 'application/octet-stream'
>>> attach["Content-Disposition"] = 'attachment; filename="test.txt"'
>>> message.attach(attach)
基于QQ邮箱的SMTP发送配置与实战
邮件构建完成后,即可通过SMTP协议进行发送。此处以QQ邮箱为例,操作前需先在QQ邮箱设置中开启SMTP服务,并生成相应的授权码,具体步骤如图所示。

使用QQ邮箱发送电子邮件的具体代码实现如下。
>>> import smtplib
>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> message = MIMEText('正文', 'plain', 'utf-8')
>>> message['From'] = Header("发件人", 'utf-8')
>>> message['To'] = Header("收件人", 'utf-8')
>>> message['Subject'] = Header('主题', 'utf-8')
>>> server=smtplib.SMTP_SSL("smtp.qq.com", 465)
>>> server.login('xxxxxxxx@qq.com', 'dvyybvbwpnnbbdaj')
>>> server.sendmail('xxxxxxxx@qq.com', 'xxxxxxxx@qq.com' , message.as_string())
自动化场景应用:磁盘监控与告警
针对内容固定且需定期发送的邮件,利用自动化脚本可显著降低人工成本。例如,通过Python监控磁盘空间,当使用率超过80%时,自动向运维人员发送提醒邮件,提示进行数据备份或磁盘清理。
以上就是关于Python自动化发送邮件的完整实例讲解,更多相关技术内容可查阅本站往期文章或继续浏览后续教程,感谢大家的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













