Python利用smtplib发送邮件及携带附件
版权申诉
144 浏览量
更新于2024-08-08
收藏 255KB DOCX 举报
本文档介绍了如何使用Python的smtplib库和Email模块发送电子邮件,包括发送纯文本邮件和处理字符编码。
在Python中,发送电子邮件通常涉及到使用smtplib库来处理邮件的传输,以及Email模块来构造邮件内容。SMTP(Simple Mail Transfer Protocol)是一种用于在互联网上传输邮件的标准协议。smtplib提供了发送邮件的功能,而Email模块则用来构建邮件的各种部分,如文本、附件或嵌入的图片。
要发送文本邮件,首先需要导入smtplib和email.mime.text模块。以下是一个简单的示例:
```python
from smtplib import SMTP
from email.mime.text import MIMEText
# 创建MIMEText对象,将邮件正文作为参数传入
msg = MIMEText('这是邮件的正文内容', 'plain', 'utf-8')
# 设置其他必要的邮件属性,如发件人、收件人等
msg['From'] = '发送者邮箱@example.com'
msg['To'] = '接收者邮箱@example.com'
msg['Subject'] = '邮件主题'
# 连接SMTP服务器并登录
smtp_server = 'smtp.example.com'
smtp_port = 587 # 通常使用SSL/TLS的安全端口
smtp_username = '发送者邮箱'
smtp_password = '发送者密码'
with SMTP(smtp_server, smtp_port) as server:
server.starttls() # 启动TLS加密
server.login(smtp_username, smtp_password)
# 发送邮件
server.sendmail(msg['From'], msg['To'], msg.as_string())
```
在这个例子中,`MIMEText`类被用来创建一个表示纯文本的MIME对象。'plain'参数指定了子类型为纯文本,'utf-8'是字符编码,确保非ASCII字符能正确传输。邮件的发件人、收件人和主题通过设置msg对象的元数据字段完成。最后,通过SMTP服务器发送邮件,使用`starttls`方法开启安全连接,并使用`login`方法进行身份验证,然后调用`sendmail`发送邮件。
除了发送纯文本邮件,smtplib和Email模块还支持发送带附件的邮件。你可以使用`email.mime.multipart.MIMEMultipart`类来创建一个包含多个部分的邮件,然后添加MIMEText或MIMEBase实例来表示不同的内容类型,例如:
```python
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
# 添加附件
attachment = open('path_to_your_file', 'rb') # 打开文件
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part) # 对附件进行Base64编码
part.add_header('Content-Disposition', 'attachment', filename='your_file_name')
msg.attach(part)
```
完成邮件构造后,按照之前的方式通过SMTP服务器发送即可。
Python的smtplib和Email模块提供了一套强大且灵活的工具,可以方便地实现邮件的发送,无论是简单的文本邮件还是包含复杂内容的邮件,都能轻松处理。只需了解基本的SMTP协议和Python的邮件处理库,就可以自动化执行邮件发送任务,比如发送测试报告或其他通知。
2019-10-09 上传
2019-05-10 上传
2021-06-22 上传
2023-05-13 上传
2023-09-07 上传
2023-05-05 上传
2023-07-12 上传
2023-05-23 上传
2023-05-21 上传
![](https://profile-avatar.csdnimg.cn/ac8b9680820940e7ac9d0c7be554f725_weixin_44609920.jpg!1)
小兔子平安
- 粉丝: 243
- 资源: 1940
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景