
Python利用smtplib和email模块自动发送邮件教程
89KB |
更新于2024-08-29
| 200 浏览量 | 6 评论 | 举报
收藏
"本文主要介绍了如何使用Python的smtplib和email模块来自动发送电子邮件,这两个模块是Python标准库的一部分,无需额外安装。通过smtplib可以实现邮件的发送,而email则用于构建邮件的各个组成部分,如发件人、收件人、主题、正文和附件。"
在Python中发送邮件,你需要了解以下关键知识点:
1. smtplib模块:
smtplib是Python中的一个标准库,用于处理SMTP(Simple Mail Transfer Protocol)协议,即发送邮件。使用smtplib时,首先需要创建SMTP对象,然后连接到SMTP服务器,登录邮箱,发送邮件,并在完成操作后关闭连接。基本的使用流程如下:
```python
import smtplib
smtp_server = smtplib.SMTP('smtp.163.com', 25)
smtp_server.login('your_username', 'your_client_password') # 使用授权码代替普通密码
smtp_server.sendmail('[email protected]', ['[email protected]', '[email protected]'], message.as_string())
smtp_server.quit()
```
其中,`smtp_server.connect()`用于连接SMTP服务器,参数是服务器地址和端口号;`smtp_server.login()`用于登录邮箱,通常需要提供邮箱用户名和客户端授权码;`smtp_server.sendmail()`用于发送邮件,参数分别是发件人地址、收件人列表(可为字符串列表或单个字符串)和邮件内容(通常是经过编码的字符串)。
2. email模块:
email模块用于构建邮件的结构,包括邮件头部(header)和邮件体(body)。它包含多个子模块,如email.mime用于创建不同类型的邮件内容(如文本、HTML、附件等)。下面是一个简单的例子:
```python
import email
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
msg['Subject'] = '邮件主题'
body = '邮件正文内容'
msg.attach(MIMEText(body, 'plain'))
# 添加附件
with open('attachment.txt', 'rb') as f:
part = MIMEBase('application', 'octet-stream')
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="attachment.txt"')
msg.attach(part)
```
在这个例子中,我们首先创建了一个MIMEMultipart对象,用于承载多个邮件部分。接着设置了邮件的发件人、收件人和主题。然后,我们创建了一个MIMEText对象,用来存储邮件正文,并将其添加到MIMEMultipart对象中。如果需要添加附件,可以创建一个MIMEBase对象,读取文件内容,进行编码,设置附件的Content-Disposition头,最后附加到邮件中。
3. 使用授权码:
当使用如163、126等邮箱时,由于安全原因,通常需要使用客户端授权码而非普通密码登录SMTP服务器。这些授权码可以在邮箱设置中生成,确保了发送邮件的安全性。
4. SMTP服务器地址和端口:
不同的邮箱服务商可能有不同的SMTP服务器地址和默认端口。例如,163邮箱的SMTP服务器地址是'smtp.163.com',默认端口为25。在实际使用中,需要根据所使用的邮箱服务来确定正确的服务器地址和端口。
结合smtplib和email模块,你可以轻松地在Python程序中实现自动发送邮件的功能,无论是简单的文本邮件还是包含附件的复杂邮件。记得在实际操作中,确保遵循邮箱服务商的安全规定,正确使用授权码,并处理好异常情况,以保证邮件发送的稳定性和安全性。
相关推荐

















资源评论

行走的瓶子Yolo
2025.07.19
文档内容详细,对Python邮件发送流程有清晰讲解。

罗小熙
2025.06.17
通过实例介绍了Python自动发邮件的核心模块使用。

卡哥Carlos
2025.06.06
实例丰富,一步步教学,易懂易操作。

山林公子
2025.05.16
简洁实用,适合初学者学习如何用Python自动发送邮件。

白绍伟
2025.04.16
适合想提高工作效率的程序员阅读参考。

7323
2025.03.23
为Python编程人员提供了一种高效邮件处理方式。💞

weixin_38689551
- 粉丝: 9
最新资源
- 简化实现Android支付宝支付功能
- VS2015环境下编译openssl-1.0.1u静态库指南
- STLink-v2驱动安装指南:适用于STM32与Keil5
- 如何在MAC系统上安装VM14补丁
- JDK1.6 X86版本特性与下载指南
- 基于JSP和SQL Server的简易个人博客搭建
- 美食旅游网站多级页面模板指南
- C++实现BP神经网络进行模式识别教程
- Open vSwitch在Neutron中的应用与介绍
- 新版Navicat12.0.19 Premium for CS x64发布
- 新手必学JavaScript碰撞检测技术指南
- 深入了解DoubleDatePicker日期选择控件
- Windows 10 64位系统Git客户端使用指南
- 基于Python的行车轨迹路网提取技术
- Cheat Engine 6.7中文版发布,功能提升引发关注
- 员工管理系统:客户端与TCP服务器交互解析
- 博特CPE与华为路由器配置GRE隧道抓包实践指南
- Netty官方示例项目整理:立即运行的Maven工程
- Lua编程入门教程:完整指南
- Unity插件DOTween 动画制作的佼佼者
- Java实现的新闻发布系统及其管理功能
- SuperMap内存数据等级符号专题图应用指南
- Direct3D 11初学者入门官方完整示例教程
- HTML5创新应用:交互式世界地图自定义显示国家名