我已使用模块Mail::Webmail::Gmail阅读我的Gmail帐户中的新邮件。
我为此目的编写了以下代码:
use strict;
use warnings;
use Data::Dumper;
use Mail::Webmail::Gmail;
my $gmail = Mail::Webmail::Gmail->new(
username => 'username', password => 'password',
);
my $messages = $gmail->get_messages( label => $Mail::Webmail::Gmail::FOLDERS{ 'INBOX' } );
foreach ( @{ $messages } ) {
if ( $_->{ 'new' } ) {
print "Subject: " . $_->{ 'subject' } . " / Blurb: " . $_->{ 'blurb' } . "\n";
}
}
但它没有打印任何东西。
任何人都可以帮助我或建议任何其他模块吗?
提前致谢。
答案 0 :(得分:5)
这几乎来自Net :: IMAP :: Simple POD中的单词:
use strict;
use warnings;
# required modules
use Net::IMAP::Simple;
use Email::Simple;
use IO::Socket::SSL;
# fill in your details here
my $username = 'user@example.com';
my $password = 'secret';
my $mailhost = 'pop.gmail.com';
# Connect
my $imap = Net::IMAP::Simple->new(
$mailhost,
port => 993,
use_ssl => 1,
) || die "Unable to connect to IMAP: $Net::IMAP::Simple::errstr\n";
# Log in
if ( !$imap->login( $username, $password ) ) {
print STDERR "Login failed: " . $imap->errstr . "\n";
exit(64);
}
# Look in the the INBOX
my $nm = $imap->select('INBOX');
# How many messages are there?
my ($unseen, $recent, $num_messages) = $imap->status();
print "unseen: $unseen, recent: $recent, total: $num_messages\n\n";
## Iterate through unseen messages
for ( my $i = 1 ; $i <= $nm ; $i++ ) {
if ( $imap->seen($i) ) {
next;
}
else {
my $es = Email::Simple->new( join '', @{ $imap->top($i) } );
printf( "[%03d] %s\n\t%s\n", $i, $es->header('From'), $es->header('Subject') );
}
}
# Disconnect
$imap->quit;
exit;
答案 1 :(得分:3)
您可以使用Mail::POP3Client模块。它用于从Gmail帐户获取邮件。
答案 2 :(得分:1)
尝试操作后,您是否尝试过进行错误检查
if ($gmail->error())
{
print $gmail->error_msg();
}
我发现当我这样做时会导致:
错误:无法使用这些登录 凭据 - 找不到最终的网址 此外,HTTP错误:200 OK 错误:无法登录。
我认为可能是因为该模块最后一次更新是在2006年,而gmail可能已经改变了登录的工作方式,因此它可能无法再访问它。
如果您不想只使用pop3下载新邮件,那么您可以使用 Net::IMAP::Simple通过IMAP访问Gmail帐户