如何从perl连接到gmail?

如何从perl连接到gmail?,perl,email,imap,Perl,Email,Imap,我正在尝试从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_veri

我正在尝试从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

我尝试调用客户端->登录,没有任何区别

有几个问题的内容类似,但答案说明使用不同的包(Mail::Webmail::Gmail是其中之一,但它似乎过时了,也不起作用)

该帐户是一个谷歌应用程序帐户,而不是一个普通的gmail帐户。我已启用该帐户的imap访问权限

我还尝试使用Net::IMAP::Client,既使用googleapps帐户,也使用我的gmail帐户和特定于应用程序的密码,但只得到“无效凭据”

在尝试连接gmail imap时,我是否遗漏了什么?

在Perl中,单引号中的字符串“
\@
”字面上是“
\@


丢了
\

你有多蠢?没关系,我们都做过一两次。
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);