【发布时间】:2021-02-25 22:32:34
【问题描述】:
在通过我们的 G Suite 帐户/地址发送电子邮件近十年后,该脚本昨晚在托管公司服务器升级后停止工作。 (不幸的是,托管公司目前已将其归档在“不是我们的问题”下,因此这方面确实没有任何帮助。我希望至少排除任何我们做错的事情,并能够通过一些有用的取证返回给他们。)
这是相关的 Perl 摘录:
$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;
这是输出:
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.
其他几点说明:
- 为域和用户地址@mydomain.com 启用了不太安全的应用程序访问(与以前一样)。
- 这些是有效凭据。它们目前可用于登录 mail.mydomain.com(Web/Gmail 界面),并且与之前用于此方法的相同。
- 通过 Gmail 发送邮件的方法在网络上很常见,包括 SO 和其他地方,包括 https://support.google.com/a/answer/176600:使用 Gmail SMTP 服务器,位于 Other setup options 。
- 同样,直到服务器升级为止。但由于我在错误输出中没有看到任何内容,因此我不确定从哪里开始寻找破损。
通常发生这种情况时,我会遗漏一些明显的东西,所以我是否遗漏了一些明显的东西?
【问题讨论】:
-
我在您的错误输出中看到“无法验证”。你没看到吗?您确定您的凭据有效吗?
-
@TLP 是的,这是我关于 auth() 失败的消息。如前所述,凭据与我目前可用于通过 Web 界面登录的凭据相同,并且与过去约 10 年的凭据相同。出于某种原因,身份验证(突然)失败,但我没有太多要解释的原因。