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

使用Perl通过G套件发送电子邮件,perl,smtp,gmail,Perl,Smtp,Gmail,在通过我们的G套件帐户/地址发送电子邮件近十年后,该脚本在托管公司服务器升级后于昨晚停止工作。不幸的是,托管公司目前已经提交了这项申请,但这并不是我们的问题,所以这方面确实没有任何帮助。我希望至少能排除我们做错的任何事情,并能通过一些有用的取证回到他们那里 以下是相关的Perl摘录: $smtp=Net::smtp->new'smtp.gmail.com',Port=>465,Timeout=>30,Hello=>mail.mydomain.com',SSL=>1,Debug=>1; $logi

在通过我们的G套件帐户/地址发送电子邮件近十年后,该脚本在托管公司服务器升级后于昨晚停止工作。不幸的是,托管公司目前已经提交了这项申请,但这并不是我们的问题,所以这方面确实没有任何帮助。我希望至少能排除我们做错的任何事情,并能通过一些有用的取证回到他们那里

以下是相关的Perl摘录:

$smtp=Net::smtp->new'smtp.gmail.com',Port=>465,Timeout=>30,Hello=>mail.mydomain.com',SSL=>1,Debug=>1; $login和$pass有效address@mydomain.com密码 用于登录mail.mydomain.com上的Gmail界面 打印auth$login,$pass\n; $smtp->auth$login,$pass或die无法进行身份验证; $smtp->mail$登录; $smtp->recipient$email; $smtp->data$邮件或死亡数据发送到:$email失败\n; $smtp->退出; 以下是输出:

网络::SMTP::_SSL>>>网络::SMTP::_SSL Net::SMTP::_SSL>>>IO::Socket::SSL2.060 Net::SMTP::_SSL>>>IO::Socket::IP0.39 Net::SMTP::_SSL>>>IO::Socket1.39 Net::SMTP::_SSL>>>IO::Handle1.39 Net::SMTP::_SSL>>>Exporter5.73 Net::SMTP::_SSL>>>Net::SMTP3.11 Net::SMTP::_SSL>>>Net::Cmd3.11 Net::SMTP::_SSL=GLOB0x7fc8de8ab9d8>EHLO mail.mydomain.com
Net::SMTP::_SSL=GLOB0x7fc8de8ab9d8如果调试输出显示未尝试进行身份验证,则可能是所需模块未安装或未正确安装。从:

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


要确定问题,不只是因为自定义错误而死亡,还需要记录$smtp->message。基于此,然后可能会记录错误,需要MIME::Base64和Authen::SASL todo auth。

我发现无法在错误输出中进行身份验证。你没看到吗?您确定您的凭据有效吗?@TLP是的,这是我关于身份验证失败的消息。如前所述,这些凭证与我目前通过web界面登录时使用的凭证相同,并且与过去10年中使用的凭证相同。由于某种原因,身份验证突然失败了,但我没有太多的理由去解释。谢谢。这实际上是我今天要求他们支持的事情,但还没有得到回复。@KT_886;:你为什么不检查一下自己?只需在命令行上使用perl-MAuthen::SASL-e,或者在脚本中使用Authen::SASL。另外,记录答案中建议的更多错误详细信息。我认为你是对的。我以前找过,但没找到。我不确定是否有某种方法可以在系统上使用它,因为我想如果它丢失了,我会得到一个明确的错误——瞧,它就在你在$smtp->message中建议的地方。再次感谢。我只想确认一件事,然后我会接受你的回答。