Python利用smtplib和email模块自动发送邮件教程
173 浏览量
更新于2024-08-29
收藏 89KB PDF 举报
"本文主要介绍了如何使用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('from_email@example.com', ['to_email1@example.com', 'to_email2@example.com'], 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'] = 'from_email@example.com'
msg['To'] = 'to_email@example.com'
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程序中实现自动发送邮件的功能,无论是简单的文本邮件还是包含附件的复杂邮件。记得在实际操作中,确保遵循邮箱服务商的安全规定,正确使用授权码,并处理好异常情况,以保证邮件发送的稳定性和安全性。
2024-03-15 上传
2023-03-10 上传
2020-09-19 上传
144 浏览量
2023-05-10 上传
2020-09-20 上传
104 浏览量
2020-09-18 上传
2020-09-21 上传
weixin_38689551
- 粉丝: 9
- 资源: 918
最新资源
- 桃桃_信息熵函数_
- 异步操作测试.zip
- Titration: Project Tracking Application-开源
- 消费日志:SpendLogs-个人支出经理
- ApkAnalyser-apk敏感信息提取
- springbootFastdfs
- pico-snake:用于Raspberry Pi Pico的MicroPython中的Snake游戏
- 实验8 PWM输出实验(ok)_pwm_stm32_LED_
- loopback连接oracle数据的步骤总结
- BLoC-Shopping:使用“业务逻辑组件”设计模式和集团状态管理的应用
- 网站源代码前端交互 移动端转换
- Chart:基于 Highcharts.js 的图表生成器
- 人体测量学
- next-crud:使用NextJS构建的全栈CRUD应用程序
- Matrosdms:具有现实生活对象的文件管理系统-开源
- CPP程序设计实践教程_Cprogram_