首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PERL电子邮件::Send::Gmail无法连接到Windows 7上的Gmail帐户

问PERL电子邮件::Send::Gmail无法连接到Windows 7上的Gmail帐户
EN

Stack Overflow用户
提问于 2014-05-16 20:30:00
回答 2查看 1.7K关注 0票数 4

我试图使用Email::Send::Gmail发送电子邮件,但由于某些原因,我收到了一个错误,它不允许我连接。

代码是标准示例:

代码语言:javascript
复制
#!/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 $@;

准确的错误是:

代码语言:javascript
复制
Email::Send::Gmail: error connecting to server smtp.gmail.com 
at C:/Perl/site/lib/Email/Send.pm line 256.

我已经查看了我的gmail帐户,似乎没有任何东西可以“允许访问”。我在Windows7上运行,从命令行运行。

有什么想法吗?

谢谢,A

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 03:28:49

该升级您的依赖项了。

Email::Gmail::Send依赖于Net::SMTP::SSL,而依赖于IO::Socket::SSL。解决这类问题的第一步是升级模块依赖关系,以防已经解决了新问题。

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

代码语言:javascript
复制
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,我能够在Windows7和Linux上完全安装和使用它。目前,它会引发重新定义的警告(cpan ticket 95881),但在升级此依赖项后,我能够在Windows上发送Gmail消息。

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

票数 4
EN

Stack Overflow用户

发布于 2015-12-28 12:03:07

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

然后安装以下模块: ppm

  1. 安装电子邮件::发送:Gmail
  2. 安装网络::SMTP:SSL
  3. installIO::socket::SSL

然后尝试使用下面的示例代码。

代码语言:javascript
复制
 #!/home/ben/software/install/bin/perl
        use warnings;
        use strict;
        use Email::Send;
    use Email::Send::Gmail;
    use Email::Simple::Creator;

    my $email = Email::Simple->create (
        header => [
            From    => '@gmail.com',
                To      => '@gmail.com',
                Subject => 'Make it simple',
        ],

        body => 'buddy I got it ...',
    );

    my $sender = Email::Send->new 
    ({
            mailer      => 'Gmail',
            mailer_args => 
[
                username => '',
                password => '',
        ]
    });

    $sender->send ($email);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23704058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档