内容

名称

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::INETPeerAddr 选项所定义的,或对要依次尝试的主机数组的引用。 "host" 方法将返回用于连接到主机的值。

Port - 要连接的端口。默认值 - 普通 POP3 为 110,POP3s(直接 SSL)为 995。

SSL - 如果连接应该从一开始就使用 SSL,而不是稍后使用 starttls 升级。您可以在 IO::Socket::SSL 中使用 SSL 参数,但它通常会使用正确的参数。

LocalAddrLocalPort - 这些参数直接传递给 IO::Socket,以允许将套接字绑定到特定的本地地址和端口。为了与旧版本兼容,可以使用 ResvPort 而不是 LocalPort

Domain - 此参数直接传递给 IO::Socket,即使使用 IO::Socket::IP 作为超类,也可以强制执行 IPv4 连接。或者可以使用 Family

Timeout - 等待 POP3 服务器响应的最长时间(以秒为单位)(默认值:120)

Debug - 启用调试信息

对象方法

除非另有说明,否则所有方法都返回 truefalse 值,其中 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

banner()

返回服务器的连接横幅

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::NetrcNet::CmdIO::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 文件。