首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Perl通过G套件发送电子邮件

使用Perl通过G套件发送电子邮件
EN

Stack Overflow用户
提问于 2020-11-13 22:46:49
回答 1查看 115关注 0票数 2

经过近十年的电子邮件通过我们的G套件帐户/地址,脚本昨晚停止工作后,托管公司服务器升级。(不幸的是,托管公司目前在“不是我们的问题”下提交了这份文件,因此没有任何帮助。我希望至少排除任何我们做错了的事情,并且能够用一些有用的证据回到他们身边。)

下面是相关的Perl摘要:

代码语言:javascript
复制
    $smtp = Net::SMTP->new('smtp.gmail.com', Port => 465, Timeout => 30, Hello => 'mail.mydomain.com', SSL => 1, Debug => 1);
    # $login and $pass are valid address@mydomain.com and password
    # used for logging into the Gmail interface at mail.mydomain.com
    print "auth($login, $pass)\n";
    $smtp->auth($login, $pass) or die "Unable to authenticate";
    $smtp->mail($login);
    $smtp->recipient($email);
    $smtp->data($message) or die "data() failed sending to: $email\n";
    $smtp->quit;

这是输出:

代码语言:javascript
复制
    Net::SMTP::_SSL>>> Net::SMTP::_SSL
    Net::SMTP::_SSL>>>   IO::Socket::SSL(2.060)
    Net::SMTP::_SSL>>>     IO::Socket::IP(0.39)
    Net::SMTP::_SSL>>>       IO::Socket(1.39)
    Net::SMTP::_SSL>>>         IO::Handle(1.39)
    Net::SMTP::_SSL>>>           Exporter(5.73)
    Net::SMTP::_SSL>>>   Net::SMTP(3.11)
    Net::SMTP::_SSL>>>     Net::Cmd(3.11)
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 220 smtp.gmail.com ESMTP [###] - gsmtp
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)>>> EHLO mail.mydomain.com
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-smtp.gmail.com at your service, [###.###.###.###]
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-SIZE 35882577
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-8BITMIME
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-ENHANCEDSTATUSCODES
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-PIPELINING
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250-CHUNKING
    Net::SMTP::_SSL=GLOB(0x7fc8de8ab9d8)<<< 250 SMTPUTF8
    auth(address@mydomain.com, [password])
    Unable to authenticate at mymodule.pm line 459.

还有几个注意事项:

  1. 对于域和用户address@mydomain.com,不太安全的应用程序访问都是打开的(就像以前一样)。
  2. 这些是有效的凭证。它们目前可以用于登录到mail.mydomain.com ( web/Gmail接口),并且与以前用于此方法的相同。
  3. 用于通过Gmail发送邮件的方法在web上相当常见,包括在SO和其他地方,包括https://support.google.com/a/answer/176600在其他设置选项下使用Gmail SMTP服务器
  4. 同样,这在服务器升级之前一直有效。但是,由于我看不到错误输出中的任何内容,所以我不知道从哪里开始查找损坏。

通常情况下,当这种情况发生时,我错过了一些显而易见的东西,所以我错过了一些显而易见的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 23:24:55

如果调试输出没有显示身份验证的尝试,那么所需的Authen::SASL模块很可能没有安装或没有正确安装。来自网络文档::SMTP

八月(用户名,密码) 8月( SASL ) 尝试SASL身份验证。需要Authen::SASL模块。第一个表单使用给定的用户名和密码构造一个新的对象;第二个表单使用给定的Authen::SASL对象。

要确定这个问题,不仅需要简单地使用自定义错误死掉(),而且还要记录$smtp->message。基于这段代码,它可能会记录错误“需要MIME::Based 64和Authen::SASL todo auth”。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64829009

复制
相关文章

相似问题

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