PERL Email::Send::Gmail 无法连接到 Windows 7 上的 Gmail 帐户

use*_*186 4 email perl

我正在尝试使用它Email::Send::Gmail来发送电子邮件,但由于某种原因,我收到一条错误消息,不允许我连接。

代码是标准示例:

#!/usr/bin/perl
use strict;
use warnings;
use Email::Send;
use Email::Send::Gmail;
use Email::Simple::Creator;

my $email = Email::Simple->create(
header => [
    From    => 'myaddress@gmail.com',
    To      => 'myaddress@gmail.com',
    Subject => 'Server down',
],
body => 'The server is down. Start panicing.',
);

my $sender = Email::Send->new(
{   mailer      => 'Gmail',
    mailer_args => [
        username => 'myaddress@gmail.com',
        password => 'XXXX',
    ]
}
);
eval { $sender->send($email) };
die "Error sending email: $@" if $@;
Run Code Online (Sandbox Code Playgroud)

确切的错误是:

Email::Send::Gmail: error connecting to server smtp.gmail.com 
at C:/Perl/site/lib/Email/Send.pm line 256.
Run Code Online (Sandbox Code Playgroud)

我查看了我的 Gmail 帐户,似乎没有任何“允许访问”的内容。我在 Windows7 上并从命令行运行。

有任何想法吗?

谢谢

Mil*_*ler 5

是时候升级您的依赖项了。

Email::Gmail::Send取决于Net::SMTP::SSL哪个取决于IO::Socket::SSL。解决此类问题的第一步是升级模块依赖项,以防新问题已得到解决。

不幸的是,4天前,当你第一次提出这个问题时,我无法通过IO::Socket::SSL 1.986on 的测试套件Strawberry Perl 5.18.2

t/public_suffix_lib_uri.t ......... ok
failed to connect: An operation was attempted on something that is not a socket. at t/public_suffix_ssl.t line 87.
# Looks like you planned 24 tests but ran 2.
# Looks like your test exited with 10038 just after 2.
Run Code Online (Sandbox Code Playgroud)

幸运的是,此后作者已将该模块更新为IO::Socket::SSL 1.988,我可以在 Windows 7 和 Linux 上完全安装和使用它。目前它会抛出重新定义的警告 ( cpan ticket 95881),但升级此依赖项后我能够在 Windows 上发送 Gmail 消息。

注意:您需要application specific password为此代码创建一个,否则 Gmail 可能会阻止登录并向您发送一封“可疑登录被阻止”的电子邮件。