如何连接到Gmail收件箱

时间:2017-03-30 01:54:48

标签: perl gmail imap

我目前正在尝试使用Perl连接到gmail收件箱 Net::IMAP::Client 使用以下代码

use strict;
use warnings;

use Net::IMAP::Client;

my $user = '[address]@gmail.com';
my $pwd = '[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)

$imap变量为undef,我收到此错误:

  

在连接(。)中使用未初始化的值$ _或在testIMAP.pl第9行使用字符串。
  无法连接到IMAP服务器:在testIMAP.pl第9行。

我已使用Outlook成功连接到邮箱,但由于我没有收到错误消息,因此我不确定在哪里查看。有谁知道我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

非常感谢zdim帮助排除故障。

首先,zdim指出我的错误变量不正确。 $ _应该是$!

这显示错误消息"网络无法访问"但是我能够品脱和远程登录到' imap.gmail.com'成功。

这里找到了解决方法 Perl IO::Socket::SSL: connect: Network is unreachable

将Net :: IMAP :: Client模块中的use语句更改为以下内容:

use IO::Socket::SSL 'inet4';

此后,建立了连接,但登录失败并显示

Login failed: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)

这是由于Gmail的安全功能。我收到一封电子邮件,允许我确认连接没有恶意,然后后续登录成功。

对于其他人来说,最后一个可能有一些解决方案。您可能需要发出一个应用密码'如果激活了两步身份验证,或者您可能需要切换“允许安全性较低的应用”'