我正在尝试阅读来自Gmail帐户的邮件,我看到的示例无效。
我从这开始:
use Mail::IMAPClient;
use IO::Socket::SSL;
my $user = 'user\@mydomain.com';
my $pwd = 'password';
my $socket = IO::Socket::SSL->new(
PeerAddr => 'imap.gmail.com',
PeerPort => 993,
SSL_verify_mode => SSL_VERIFY_PEER,
)
or die "socket(): $@";
my $client = Mail::IMAPClient->new(
Socket => $socket,
User => $user,
Password => $pwd,
)
or die "new(): $@";
if ( $client->IsAuthenticated() ) {
print "Auth OK\n";
} else {
print "No auth\n";
}
这似乎有效,但从未进行身份验证。根据文档,如果提供了用户名和密码,Mail :: IMAPClient-> new应该调用login。
我尝试过调用client->登录没有区别。
有几个类似内容的问题,但答案说明使用不同的软件包(Mail :: Webmail :: Gmail是一个,但它似乎过时了,也不起作用)
该帐户是谷歌应用程序帐户,而不是常规的Gmail帐户。我已为帐户启用了imap访问权限。
我还尝试使用Net :: IMAP :: Client,既有谷歌应用程序帐户,又使用我的Gmail帐户和应用程序专用密码,除了“无效凭据”之外什么都没有。
use Net::IMAP::Client;
my $user = 'user\@gmail.com';
my $pwd = ' app password';
my $imap = Net::IMAP::Client->new(
server => 'imap.gmail.com',
user => $user,
pass => $pwd,
ssl => 1, # (use SSL? default no)
ssl_verify_peer => 0, # (use ca to verify server, default yes)
port => 993 # (but defaults are sane)
) or die "Could not connect to IMAP server: $_";
$imap->login or
die('Login failed: ' . $imap->last_error);
在尝试连接到gmail imap时,我有什么遗漏吗?
答案 0 :(得分:7)
在Perl中,单引号内的字符串“\@
”字面意思是“\@
”。
失去\
。