– POP3协议客户端 – 互联网协议和支持(Python教程)(参考资料)
poplib
– POP3协议客户端
源代码: Lib / poplib.py
这个模块定义了一个类POP3
,它封装了与aPOP3服务器的连接并实现 RFC 1939 中定义的协议。POP3
类支持 RFC 1939 的最小和可选命令集。POP3
类还支持STLS
命令介绍 RFC 2595 在已建立的连接上启用加密通信.
另外,这个模块提供了一个类POP3_SSL
,它提供了支持连接到使用SSL作为底层协议层的POP3服务器.
注意POP3虽然受到广泛支持,但已经过时了。POP3服务器的实现质量差异很大,而且太多很差。如果你的邮件服务器支持IMAP,你最好使用imaplib.IMAP4
类,因为IMAP服务器往往更好实现.
poplib
模块提供两个类:
- class
poplib.
POP3
(host, port=POP3_PORT [, timeout] ) -
该类实现了实际的POP3协议。在初始化实例时创建连接。如果省略port,则使用标准POP3端口(110)。可选的timeout参数指定连接尝试的超时秒数(如果未指定,将使用全局默认超时设置).
- class
poplib.
POP3_SSL
(host, port=POP3_SSL_PORT, keyfile=None, certfile=None, timeout=None, context=None) -
这是
POP3
的子类,它通过SSL加密套接字连接到服务器。如果未指定port,则使用标准的POP3-over-SSLport。timeout就像在POP3
构造函数中一样工作context是一个可选的ssl.SSLContext
对象,允许将SSL配置选项,证书和私钥分成单个(可能是长的)生活)结构。请阅读安全考虑以获得最佳实践.keyfile和certfile是context的遗留替代品 – 他们可以指向PEM-SSL连接的格式化私钥和证书链文件.
在版本3.2中更改:context参数已添加.
在版本3.4中更改:该类现在支持使用
ssl.SSLContext.check_hostname
和Server Name Indication检查主机名(请参阅ssl.HAS_SNI
).自版本后弃用3.6:keyfile和certfile不赞成使用context。请用
ssl.SSLContext.load_cert_chain()
相反,或者让ssl.create_default_context()
为您选择系统的可信任CA证书.
一个例外被定义为poplib
模块:
- exception
poplib.
error_proto
-
针对此模块的任何错误引发异常(未捕获
socket
模块中的错误)。异常的原因作为字符串传递给构造函数
参见
- 模块
imaplib
- 标准的Python IMAP模块.
- 关于Fetchmail的常见问题
- fetchmail的常见问题POP / IMAP客户端收集有关PCI3服务器变体和RFC不合规的信息,如果您需要基于POP协议编写应用程序,可能会有用.
POP3 Objects
所有POP3命令都由同名的方法表示,小写;大多数返回服务器发送的响应文本.
POP3
实例有以下方法:
POP3.
set_debuglevel
(level)-
设置实例的调试级别。这可以控制打印的debuggingoutput数量。默认值
0
不产生调试输出。值1
产生适量的调试输出,通常是单个线路请求。值2
或更高产生最大量的调试输出,记录控制连接上发送和接收的每一行.
POP3.
getwelcome
()-
返回POP3服务器发送的问候字符串。
POP3.
capa
()-
查询 RFC 2449 中指定的服务器功能。返回表格中的字典
{"name": ["param"...]}
.版本3.4中的新增功能.
POP3.
apop
(user, secret)-
使用更安全的APOP身份验证登录POP3服务器.
POP3.
rpop
(user)-
使用RPOP认证(类似于UNIX r命令)登录POP3服务器.
POP3.
stat
()-
获取邮箱状态。结果是2个整数的元组:
(message count,mailbox size)
.
POP3.
retr
(which)-
检索整个消息号which,并设置它的旗帜。结果形式为
(response, ["line", ...], octets)
.
POP3.
dele
(which)-
标记消息号which删除。在大多数服务器上,删除操作直到QUIT才会执行(主要的例外是Eudora QPOP,它通过在任何断开连接上执行挂起删除来故意违反RFC).
POP3.
rset
()-
删除邮箱的任何删除标记.
POP3.
noop
( )-
什么都不做。可以用作keep-alive.
POP3.
quit
()-
Signoff:提交更改,解锁邮箱,断开连接.
POP3.
top
(which, howmuch)-
在消息号howmuch的头之后检索消息头加上which消息行。结果形式为
(response, ["line", ...],octets)
.与RETR命令不同,此方法使用的POP3 TOP命令不设置themessage的see标志;不幸的是,TOP在RFC中的指定很差,并且在品牌外的服务器中经常被破坏。在信任它之前,手动测试这个方法对你将使用的PP3服务器.
POP3.
uidl
(which=None)-
返回消息摘要(唯一ID)列表。如果指定which,则结果包含
"response mesgnum uid
格式的该消息的唯一id,否则结果为list(response, ["mesgnum uid", ...], octets)
.
POP3.
utf8
()-
尝试切换到UTF-8模式。如果成功则返回服务器响应,如果没有则引发
error_proto
。在中指定RFC 6856 .版本3.5中的新内容.
POP3.
stls
(context=None)-
在活动连接上启动TLS会话在 RFC 2595 中指定。只有在用户认证之前才允许这个
context参数是
ssl.SSLContext
对象,它允许捆绑SSL配置选项,证书和私钥进入单一(可能长寿)的结构。请阅读安全考虑以获得最佳实践.此方法通过
ssl.SSLContext.check_hostname
和Server Name Indication(看到ssl.HAS_SNI
).版本3.4.
的实例POP3_SSL
没有其他方法。这个子类的接口与它的父类相同.
POP3例
这是一个最小的例子(没有错误检查),打开邮箱并检索并打印所有邮件:
import getpass, poplibM = 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)
在模块的最后,有一个测试部分,其中包含更广泛的使用示例.
评论被关闭。