Python使用poplib和smtplib模块实现邮件收发
16 浏览量
更新于2024-08-31
收藏 89KB PDF 举报
"Python 使用 poplib 模块和 smtplib 模块收发电子邮件的教程"
在 Python 中,处理电子邮件的收发是一项常见的任务,这通常涉及到使用 `poplib` 和 `smtplib` 这两个标准库。`poplib` 用于处理 POP3 协议,用于接收邮件,而 `smtplib` 用于处理 SMTP 协议,用于发送邮件。这两个模块提供了方便的接口,使得在 Python 程序中收发邮件变得简单。
首先,让我们深入了解 `poplib` 模块。POP3(Post Office Protocol version 3)是一种用于从邮件服务器下载邮件的协议,它支持断线操作,意味着你可以分多次下载邮件,而不会丢失已下载的邮件。`poplib` 提供了 `POP3` 类,通过这个类可以与 POP3 服务器进行交互。例如,你可以使用 `POP3` 类的 `USER` 方法认证用户名,接着使用 `PASS` 方法输入密码进行登录。`STAT` 方法可以获取邮箱中的邮件总数和总大小,`UIDL` 返回邮件的唯一标识符,`LIST` 获取邮件列表及其大小,`RETR` 下载指定邮件的完整内容,`DELE` 标记邮件为删除,`RSET` 取消删除标记,`TOP` 获取邮件的前几行,`NOOP` 保持连接活跃,最后使用 `QUIT` 退出会话。
现在转向 `smtplib` 模块。SMTP(Simple Mail Transfer Protocol)用于发送邮件。在 Python 中,`smtplib.SMTP` 类提供了发送邮件的功能。通常,我们首先创建 `SMTP` 实例,然后通过 `connect()` 连接到 SMTP 服务器,使用 `starttls()` 或 `ehlo()` 开启 SSL/TLS 安全连接(如果支持),接着 `login()` 认证发送者账号,最后使用 `sendmail()` 发送邮件。`smtplib` 还支持发送 HTML 邮件、添加附件、设置发件人和收件人等高级功能。
以下是一个简单的示例,展示如何使用这两个模块发送和接收邮件:
```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from poplib import POP3
# 发送邮件
def send_email():
msg = MIMEMultipart()
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'
msg['Subject'] = 'Test Email'
body = 'This is a test email sent using Python.'
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login('sender@example.com', 'password')
server.send_message(msg)
server.quit()
# 接收邮件
def receive_email():
pop_server = 'pop.example.com'
pop_user = 'receiver@example.com'
pop_password = 'password'
with POP3(pop_server) as pop:
pop.user(pop_user)
pop.pass_(pop_password)
num_messages = pop.stat()[0]
for i in range(num_messages):
raw_message = b'\n'.join(pop.retr(i + 1)[1])
message = email.message_from_bytes(raw_message)
print(f"Message {i+1}: {message['Subject']}")
# 调用函数
send_email()
receive_email()
```
请注意,这只是一个基础示例,实际应用中可能需要处理更复杂的场景,比如错误处理、邮件解析、多线程等。此外,为了安全起见,应当避免在代码中明文存储敏感信息,如密码,而应使用环境变量或密钥管理服务。
282 浏览量
1250 浏览量
614 浏览量
475 浏览量
2021-11-27 上传
2021-10-16 上传
110 浏览量
2021-06-05 上传
194 浏览量
weixin_38621870
- 粉丝: 7
- 资源: 936
最新资源
- 100课AE系统教程,让你的视频玩转特效功能41-80.rar
- b7a-community-call-samples
- tinykv:基于TiKV模型构建分布式键值服务的课程
- 经典企业电脑模板
- 行业-强化练习-言语3+乌米+(讲义+笔记).rar
- libwdi:USB 设备的 Windows 驱动程序安装程序库-开源
- jQuery版本
- RBAP-Wiki:这是Roblox游戏的官方维基,称为“随机建筑和零件”。
- 字模提取软件合集有问题可以问我
- alien-filter
- pyslam:pySLAM在Python中包含一个单眼视觉Odometry(VO)管道。 它支持基于深度学习的许多现代本地功能
- SpringBoot之rpm打包文档.rar
- 距离标度:一种改进基于密度聚类的距离标度方法-matlab开发
- yarl:另一个URL库
- 信息系统项目管理师论文真题范文汇总.zip
- ICLR 2021上关于【NLP】主题的论文