【问题标题】:How to connect to a Gmail inbox如何连接到 Gmail 收件箱
【发布时间】:2017-03-30 01:54:47
【问题描述】:

我目前正在尝试使用 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 成功连接到邮箱,但由于没有收到错误消息,我不知道在哪里查看。有谁知道我在这里做错了什么?

【问题讨论】:

  • 无论我将什么作为 用户名,我似乎都得到了相同的结果。我相信如果只是错误的细节,它会给我一个“无效的凭据”错误。但是 $imap 对象根本没有被创建(是 undef)。
  • 没错,它应该给你一些东西。不知道。我从字面上复制粘贴了您的脚本,仅更改了凭据,并且有效。我将查看模块文档以查找故障排除方法......此外,可能值得检查您的 gmail 设置,关于证书等。 (也许它可能被设置为需要那个或一些额外的东西?)双重验证? (或者不管他们怎么称呼它。)我会先看看 gmail。
  • 嗯,是的,你会期待 something 回来。奇怪的是它就这样失败了。 (我用这个模块搜索了“问题”和这样的词,有趣的是我得到什么都没有。看起来不错的模块。)
  • 等等...为什么die中有$_?我没有注意到这一点。你想要$!(或者可能是另一个错误变量)。 $_ 不应在此处设置。 $!应该有失败的原因。
  • 好的。不一样的球赛。所以......我会首先尝试通过 Perl 获取任何网页,比如LWP。然后,似乎该模块使用IO::Socket::INET 模块来获取连接。 (请参阅其source_get_socket。)因此,我将尝试使用该模块的最简单程序,以出去并连接到某个地方。也许首先搜索它的文档(和谷歌,用那个模块?)“网络无法访问”错误。

标签: perl gmail imap


【解决方案1】:

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

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

这显示了错误消息“网络无法访问”,但是我能够成功通过 pint 和 telnet 连接到 '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 的安全功能所致。我收到一封电子邮件,让我确认连接不是恶意的,然后后续登录成功。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 2011-02-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多