Я использую Windows XP SP3 с ActiveState Perl 5.10.0, и я написал эту функцию, взятую/отредактированную из CPAN Net::POP3, в попытке прочитать Gmail через POP3:
my $pop = Net::POP3->new('pop.gmail.com',
Timeout => 60,
Port => 995,
Debug => 1) || die "$!";
my $num = $pop->login('[email protected]', '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
и т. д.).
Есть идеи, что не так с моим кодом и/или как можно читать Gmail через POP3 в Windows XP с ActivePerl 5.10.0?
Согласно Gmail, стандартные инструкции по настройке:
Incoming Mail (POP3) Server - requires SSL: pop.gmail.com
Use SSL: Yes
Port: 995
$!
, и ничто из того, что я вижу, не заставляет меня думать, что$!
здесь имеет смысл. Один из его базовых классов хранит сообщения в$@
, так что это может иметь смысл. - person ikegami   schedule 15.03.2013cpan IO::Socket::SSL
я получаюNet::SSLeay could not find a random number generator on your system. This will likely cause most of the tests to fail. Please see the README file for more information.
Если вы не получили эту ошибку, какую ошибку вы получили? - person ikegami   schedule 15.03.2013cpan
выполнитеo conf build_dir_reuse 0
иo conf commit
. Теперь вы можете пропустить шаги, сообщающие об ошибке.) - person ikegami   schedule 15.03.2013Net::POP3
/Net::POP3::SSLWrapper
оказались НЕ в состоянии читать сообщения. Я мог войти в систему и получить список ($pop->list;
) сообщений (хеш; ключ = номер сообщения, значение = размер), но попытки получить ($pop->get($msgnum);
) не увенчались успехом:Use of uninitialized value in numeric eq (==) at C:/Perl/lib/Net/POP3.pm line 312
Поэтому вместо этого я переключился наMail::POP3Client
: ЭТО РАБОТАЕТ! - person Scavokovich   schedule 15.03.2013