Python模块学习33 — poplib

POP(The Post Office Protocol),是一个简单的协议。它可以用来从邮件服务器上下载邮件。
POP最常用的版本是3,通常被称为POP3。因为版本3用的实在是太广泛了。因此POP和POP3经常可以互换使用。
Python提供一个模块称为poplib,它提供一个使用POP的便利接口。

使用poplib来连接服务器,取得邮箱信息,下载邮件并在服务器上删除邮件。这就是POP所有标准的特性。

—————————-
USER user username 认可 用户名,此命令与下面的pass命令若成功,将导致状态转换
PASS pass_ password 认可 用户密码
APOP apop Name,Digest 认可 Digest是MD5消息摘要
—————————-
STAT stat None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL uidl [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST list [Msg#] 处理 返回邮件数量和每个邮件的大小
RETR retr [Msg#]    处理 返回由参数标识的邮件的全部文本
DELE dele [Msg#]    处理 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET rset None    处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP top [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP noop None 处理 服务器返回一个肯定的响应
—————————-
QUIT quit     None 更新
—————————-
对应poplib处理过程如下:
1. 连接pop3服务器 (poplib.POP3.__init__)
2. 发送用户名和密码进行验证 (poplib.POP3.user poplib.POP3.pass_)
3. 获取邮箱中信件信息 (poplib.POP3.stat)
4. 收取邮件 (poplib.POP3.retr)
5. 删除邮件 (poplib.POP3.dele)
6. 退出 (poplib.POP3.quit)

简单实例

import poplib
import email

username = 'xxx@qq.com'
password = 'password'

try:
    p = poplib.POP3_SSL('pop.qq.com','995')		# 创建一个pop3连接
    p.set_debuglevel(1)		# 调试模式
    p.user(username)		# 向服务器发送用户名
    p.pass_(password)		# 向服务器发送密码
    ret = p.stat()			# 获取服务器上信件信息,返回是一个列表,第一项是一共有多上封邮件,第二项是共有多少字节
except poplib.error_proto,e:
    print "Loin failed:",e
    sys.exit()

for item in p.list()[1]:
    number,octets = item.split(' ')
    lines = p.retr(number)[1]					# 取当前这封邮件完整信息
    msg = email.message_from_string("\n".join(lines))	# 把邮件转换成email.message实例,支持字典操作
    if msg['subject'] == "shutdown server":		# 判断是否有shutdown server为标题的邮件
        p.dele(number)		# 标示为删除邮件
        p.quit()			# 完成之前标示操作并退出
        return 0

原创文章,作者:Tina,如若转载,请注明出处:https://python.01314.cn/201510372.html