我正在使用带有 ActiveState Perl 5.10.0 的 Windows XP SP3,并且我编写了这个函数——从 CPAN 的 Net::POP3 获取/编辑——试图通过 POP3 读取 Gmail:
my $pop = Net::POP3->new('pop.gmail.com',
Timeout => 60,
Port => 995,
Debug => 1) || die "$!";
my $num = $pop->login('xyz@gmail.com', 'password');
if (!defined($num))
{
die "Error: couldn't sign-in to your email account.\n";
}
elsif ($num > 0)
{
warn "There are $num message(s) in your inbox.\n";
my $msgnums = $pop->list;
foreach my $msgnum (keys %$msgnums)
{
my $msg = $pop->get($msgnum);
print @$msg;
}
}
else
{
die "There are no messages in your inbox. (Nothing to do.)\n"
}
$pop->quit;
代码只是超时并显示此错误消息:
Use of uninitialized value in numeric eq (==) at C:/Perl/lib/Net/POP3.pm line 59.
Bad file descriptor at pop3.pl line xxx (i.e., the Net::POP3->new() line)
在超时发生之前来自 Net::POP3 的调试信息是:
Net::POP3>>> Net::POP3(2.29)
Net::POP3>>> Net::Cmd(2.29)
Net::POP3>>> Exporter(5.62)
Net::POP3>>> IO::Socket::INET(1.31)
Net::POP3>>> IO::Socket(1.30_01)
Net::POP3>>> IO::Handle(1.27)
Net::POP3=GLOB(0x20d253c): Timeout at pop3.pl line xxx
我也尝试过使用Mail::POP3Client
;在 Windows XP 上没有乐趣,因为 CPAN 和 PPM 都不会安装它及其依赖项(IO::SOCKET::SSL
等等)。
任何想法我的代码有什么问题和/或如何使用 ActivePerl 5.10.0 在 Windows XP 上通过 POP3 读取 Gmail?
根据Gmail,标准配置说明是:
Incoming Mail (POP3) Server - requires SSL: pop.gmail.com
Use SSL: Yes
Port: 995