poplib模块定义了POP3类,封装了到POP3服务器的连接,并实现了RFC1939中定义的协议。POP3类支持RFC1939中的最小和可选命令集。POP3类还支持RFC2595中引入的STLS命令,以便在已建立的连接上启用加密通信。
poplib官方说明文档
官方小例子
import getpass, poplib
M = poplib.POP3('localhost')
M.user(getpass.getuser())
M.pass_(getpass.getpass())
numMessages = len(M.list()[1])
for i in range(numMessages):
for j in M.retr(i+1)[1]:
print(j)
简要介绍
#poplib.POP3(host, port=POP3_PORT[, timeout])
使用POP3协议初始化并创建连接
如果省略端口,则使用标准POP3端口(110)
可选的timeout参数指定连接尝试的超时时间(以秒为单位),如果未指定,将使用全局默认超时设置
#poplib.POP3_SSL(host, port=POP3_SSL_PORT, keyfile=None, certfile=None, timeout=None, context=None)
POP3的子类,允许使用SSL加密的套接字与服务器通信,需要提供授权证书和私钥
#POP3.set_debuglevel(level)
设置实例的调试级别:0,默认值,不生成调试输出;1,适当的调试输出,通常一个请求一行;2,最大数量的调试输出
#POP3.getwelcome()
返回POP3服务器的欢迎信息
#POP3.capa()
查询指定的服务器功能。
#POP3.user(username)
向服务器发送用户信息
#POP3.pass_(password)
向服务器发送用户密码或者授权码
#POP3.apop(user, secret)
使用更安全的APOP身份验证登录POP3服务器,需要服务支持
#POP3.rpop(user)
使用RPOP身份验证登录POP3服务器,需要服务支持
#POP3.stat()
获取服务器状态,返回由邮件数量和字符大小组成的元祖
#POP3.list([which])
获取邮箱信息列表,返回由邮箱状态,邮件列表和octets组成的元祖
#POP3.retr(which)
返回指定的邮件内容
#POP3.dele(which)
标记指定的邮件,待退出连接时删除
#POP3.rset()
移除已标注的删除标识
#POP3.quit()
断开连接,提交修改
#POP3.top(which, howmuch)
检索邮件头及额外行数的信息
#POP3.uidl(which=None)
获取信息摘要列表
#POP3.utf8()
尝试切换到utf8模式
#POP3.stls(context=None)
活动连接上启动TLS会话,只有在用户身份验证之前才允许这样做
简单例子
popserver = 'pop.163.com'
popuser = 'xxxxx@163.com'
authorizedcode = 'xxxxxxxxxxxx'
#163需登录邮箱,手动开通pop3/smtp服务
import poplib
server = poplib.POP3(popserver)
server.set_debuglevel(1)
server.stls()
server.utf8()
server.user(popuser)
server.pass_(authorizedcode)
print(server.getwelcome())
print(server.capa())
print(server.list())
print(server.list(1))
print(server.retr(1))
print(server.top(1, 5))
print(server.uidl(which=1))
输出结果
*cmd* 'CAPA'
*cmd* 'STLS'
*cmd* 'UTF8'
*cmd* 'USER xxxxx@163.com'
*cmd* 'PASS xxxxxxxxxxxx'
b'+OK Welcome to coremail Mail Pop3 Server (163coms[10774b260cc7a37d26d71b52404dcf5cs])'
*cmd* 'CAPA'
{'TOP': [], 'USER': [], 'PIPELINING': [], 'UIDL': [], 'LANG': [], 'UTF8': [], 'SASL': ['PLAIN'], 'STLS': []}
*cmd* 'LIST'
(b'+OK 7 194445', [b'1 29990', b'2 29147', b'3 29992', b'4 29150', b'5 55165', b'6 9785', b'7 11216'], 62)
*cmd* 'LIST 1'
b'+OK 1 29990'
*cmd* 'RETR 1'
(b'+OK 29990 octets', [b'Received: ....)
*cmd* 'TOP 1 5'
(b'+OK 29990 octets', [b'Received: ....)
*cmd* 'UIDL 1'
b'+OK 1 1tbigAvb6Vr6m3XK0QAAss'