PERL电子邮件::发送:: Gmail无法连接到Windows 7上的Gmail帐户

时间:2014-05-16 20:30:00

标签: perl email

我正在尝试使用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 $@;

确切错误是:

Email::Send::Gmail: error connecting to server smtp.gmail.com 
at C:/Perl/site/lib/Email/Send.pm line 256.

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

有什么想法吗?

谢谢, 甲

2 个答案:

答案 0 :(得分:4)

升级依赖项的时间。

Email::Gmail::Send取决于取决于Net::SMTP::SSLIO::Socket::SSL。我解决此类问题的第一步是升级模块依赖项,以防万一已经解决了新问题。

不幸的是,4天前,当您第一次介绍此问题时,我无法通过IO::Socket::SSL 1.986 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.

幸运的是,从那时起,作者已将模块更新为IO::Socket::SSL 1.988,并且我能够在Windows 7和Linux上完全安装和使用它。目前它会抛出重新定义的警告(cpan ticket 95881),但在升级此依赖关系后,我能够在Windows上发送Gmail邮件。

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

答案 1 :(得分:0)

  

只需升级您的活动Perl版本。

然后安装以下模块: PPM

  1. 安装电子邮件::发送:Gmail
  2. 安装Net :: SMTP:SSL
  3. installIO ::插座:: SSL
  4. 然后尝试下面的示例代码。

    ==