[在 OS X 10.9.5 上运行 perl 5.16.2]
我有一个小的 Secret Santa perl 脚本,我每年清理一次,现在它决定给我带来麻烦。 (我也有一台新电脑,所以确实存在与去年不同的环境。)我打电话:
$smtp = Net::SMTP::SSL->new(Host => "mail.mydomain.org", Port => 465);
当它返回时,$smtp 不包含任何值(perl 调试器中的 'p $smtp'
只显示一个空行)和后续访问,如 $stmp->domain
(和 $smtp->auth()
)因错误而失败
Can't call method "domain" on an undefined value at ./secretsanta.pl line 67.
我在这里错过了什么?感谢您的指点。
编辑:当我打开 SSL 调试时(perl -MIO::Socket::SSL=debug4 secretsanta.pl
)我得到:
DEBUG: .../IO/Socket/SSL.pm:1769: Invalid default certificate authority locations
SSL error: 8606: 1 - error:2006D002:BIO routines:BIO_new_file:system lib
SSL error: 8606: 2 - error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
DEBUG: .../IO/Socket/SSL.pm:1774: Invalid default certificate authority locations error:0200100D:system library:fopen:Permission denied
DEBUG: .../IO/Socket/SSL.pm:529: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:531: socket connected
DEBUG: .../IO/Socket/SSL.pm:553: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:1769: SSL structure creation failed
DEBUG: .../IO/Socket/SSL.pm:1774: SSL structure creation failed error:140BA0C3:SSL routines:SSL_new:null ssl ctx
DEBUG: .../IO/Socket/SSL.pm:1758: IO::Socket::INET configuration failed
(我使用的是我的托管公司提供的 SSL 证书,它与我的邮件服务器的 DNS 名称不匹配,但显然从去年开始发生了一些变化,导致这不起作用。)
最佳答案
您是否通过升级检查过您是否受到其中一个错误的影响(可能是第一个):
在我看来适合:新电脑 -> 可能是更新版本 -> SMTP 2.35+ 的错误(列表中的第一个)。
也许您应该简单地使用 Net::SMTP 本身?
关于perl - 创建新的 Net::SMTP::SSL 对象时无提示失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822717/