Net::POP3 - 邮局协议 3 客户端类 (RFC1939)
use Net::POP3;
# Constructors
$pop = Net::POP3->new('pop3host');
$pop = Net::POP3->new('pop3host', Timeout => 60);
$pop = Net::POP3->new('pop3host', SSL => 1, Timeout => 60);
if ($pop->login($username, $password) > 0) {
my $msgnums = $pop->list; # hashref of msgnum => size
foreach my $msgnum (keys %$msgnums) {
my $msg = $pop->get($msgnum);
print @$msg;
$pop->delete($msgnum);
}
}
$pop->quit;
此模块实现了一个 POP3 协议客户端接口,使 perl5 应用程序能够与 POP3 服务器通信。此文档假定您熟悉 RFC1939 中描述的 POP3 协议。安装了 IO::Socket::SSL 后,它还支持隐式和显式 TLS 加密,即 POP3S 或 POP3+STARTTLS。
必须使用 new 方法创建一个新的 Net::POP3 对象。完成此操作后,可以通过对该对象进行方法调用来访问所有 POP3 命令。
Net::POP3 类是 Net::Cmd 的子类,并且(取决于可用性)是 IO::Socket::IP、IO::Socket::INET6 或 IO::Socket::INET 的子类。
new([$host][, %options])
这是新 Net::POP3 对象的构造函数。$host
是需要 POP3 连接的远程主机的名称。
$host
是可选的。如果未给出 $host
,则可以将其作为下面描述的 Host
选项传递。如果两者都没有给出,则将使用 Net::Config
中指定的 POP3_Hosts
。
%options
以哈希方式传入,使用键值对。可能的选项有
Host - 要连接的 POP3 主机。它可以是单个标量,如 IO::Socket::INET 中 PeerAddr
选项所定义的,或对要依次尝试的主机数组的引用。 "host" 方法将返回用于连接到主机的值。
Port - 要连接的端口。默认值 - 普通 POP3 为 110,POP3s(直接 SSL)为 995。
SSL - 如果连接应该从一开始就使用 SSL,而不是稍后使用 starttls
升级。您可以在 IO::Socket::SSL 中使用 SSL 参数,但它通常会使用正确的参数。
LocalAddr 和 LocalPort - 这些参数直接传递给 IO::Socket,以允许将套接字绑定到特定的本地地址和端口。为了与旧版本兼容,可以使用 ResvPort 而不是 LocalPort。
Domain - 此参数直接传递给 IO::Socket,即使使用 IO::Socket::IP 作为超类,也可以强制执行 IPv4 连接。或者可以使用 Family。
Timeout - 等待 POP3 服务器响应的最长时间(以秒为单位)(默认值:120)
Debug - 启用调试信息
除非另有说明,否则所有方法都返回 true 或 false 值,其中 true 表示操作成功。当方法声明它返回一个值时,失败将返回为 undef 或空列表。
Net::POP3
继承自 Net::Cmd
,因此除了此处记录的方法外,还可以使用 Net::Cmd
中定义的方法向远程 POP3 服务器发送命令。
host()
返回构造函数使用并传递给 IO::Socket::INET 以连接到主机的值。
auth($username, $password)
尝试 SASL 身份验证。
user($user)
发送 USER 命令。
pass($pass)
发送 PASS 命令。返回邮箱中的邮件数量。
login([$user[, $pass]])
发送 USER 和 PASS 命令。如果未给出 $pass
,则 Net::POP3
使用 Net::Netrc
使用主机和用户名查找密码。如果未指定用户名,则将使用当前用户名。
返回邮箱中的邮件数量。但是,如果服务器上没有邮件,则会返回字符串 "0E0"
。这将在布尔上下文中提供真值,但在数字上下文中为零。
如果在验证用户时出现错误,则将返回 undef。
starttls(%sslargs)
将现有纯连接升级为 SSL。您可以在 IO::Socket::SSL 中使用记录的 SSL 参数,但它通常会使用正确的参数。
apop([$user[, $pass]])
使用密码 $pass
作为 $user
身份验证服务器。类似于 "login",但密码不会以明文发送。
要使用此方法,您必须安装 Digest::MD5 或 MD5 模块,否则此方法将返回 undef。
返回服务器的连接横幅
capa()
返回对服务器功能的哈希的引用。APOP 被添加为伪功能。请注意,我无法找到标准功能值的列表,并且有些似乎是多单词的,而有些则不是。我们尝试智能地解析它们,但可能不正确。
capabilities()
与 capa 类似,但仅使用上次询问服务器时的缓存,以避免多次询问。
top($msgnum[, $numlines])
获取消息 $msgnum
的标头和正文的前 $numlines
行。返回对包含从服务器读取的文本行的数组的引用。
list([$msgnum])
如果使用参数调用,list
将返回消息的八位字节大小。
如果在不使用参数的情况下调用,则返回对哈希的引用。键将是所有未删除消息的 $msgnum
,值将是其八位字节大小。
get($msgnum[, $fh])
从远程邮箱获取消息 $msgnum
。如果未给出 $fh
,则 get 将返回对包含从服务器读取的文本行的数组的引用。如果给出了 $fh
,则从服务器返回的行将打印到文件句柄 $fh
。
getfh($msgnum)
与 get() 一样,但返回一个绑定的文件句柄。从该文件句柄读取将返回请求的消息。文件句柄将在消息末尾返回 EOF,不应重复使用。
last()
返回已访问的所有消息的最高 $msgnum
。
popstat()
返回一个包含两个元素的列表。它们是未删除元素的数量和 mbox 的八位字节大小。
ping($user)
返回一个包含两个元素的列表。它们是 $user
的新消息数和消息总数。
uidl([$msgnum])
如果给定,则返回 $msgnum
的唯一标识符。如果未给定 $msgnum
,则 uidl
返回对哈希的引用,其中键是消息号,值是唯一标识符。
delete($msgnum)
标记消息 $msgnum
以从远程邮箱中删除。当服务器连接关闭时,所有标记为要删除的消息都将从远程邮箱中删除。
reset()
重置远程 POP3 服务器的状态。这包括将所有消息的状态重置为不删除。
quit()
退出并关闭与远程 POP3 服务器的连接。标记为已删除的任何消息都将从远程邮箱中删除。
can_inet6()
返回我们是否可以使用 IPv6。
can_ssl()
返回我们是否可以使用 SSL。
如果 Net::POP3
对象在调用 quit
方法之前超出范围,则在关闭连接之前将调用 reset
方法。这意味着任何标记为要删除的消息都不会被删除。
无.
请参阅 https://rt.cpan.org/Dist/Display.html?Status=Active&Queue=libnet。
Net::Netrc、Net::Cmd、IO::Socket::SSL。
Graham Barr <[email protected]>。
从 1.22_02 版开始,Steve Hay <[email protected]> 现在维护 libnet。
版权所有 (C) 1995-2004 Graham Barr。保留所有权利。
版权所有 (C) 2013-2016、2020 Steve Hay。保留所有权利。
此模块是免费软件;你可以根据与 Perl 自身相同的条款重新分发或修改它,即根据 GNU 通用公共许可证或 Artistic 许可证的条款,如 LICENCE 文件中所指定。
版本 3.15
2023 年 3 月 20 日
请参阅 Changes 文件。