我目前正在尝试使用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
,我收到此错误:我已经使用Outlook成功连接到邮箱,但是由于没有收到错误消息,因此我不确定该在哪里查看。有人知道我在这里做错什么吗?
最佳答案
非常感谢zdim帮助您进行故障排除。
首先,zdim指出我的错误变量错误。 $ _应该是$!
这显示了错误消息“网络不可达”,但是我能够成功地将telnet和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的安全功能。我收到一封电子邮件,使我可以确认该连接不是恶意的,然后随后的登录成功。
对于其他人,最后一个可能有一些解决方案。如果激活了两步身份验证,则可能需要发出“应用程序密码”,或者您可能需要启用“允许不太安全的应用程序”
关于perl - 如何连接到Gmail收件箱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43107143/