我正在尝试使用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上运行并从命令行运行。
有什么想法吗?
谢谢, 甲
答案 0 :(得分:4)
升级依赖项的时间。
Email::Gmail::Send
取决于取决于Net::SMTP::SSL
的IO::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
==