当我尝试使用 Perl 脚本中的
Net::SMTP::TLS
发送电子邮件时,我得到以下信息:
在 /usr/local/share/perl5/IO/Socket/SSL.pm 第 598 行指定的 SSL_version 无效
操作系统:Linux
你知道问题是什么以及我必须做什么来解决它吗?
谢谢!
Net::SMTP::TLS 自 10 年来就不再维护,并且它已损坏,因为它导致了您所描述的错误。如果您坚持使用这个损坏的模块,您需要修复它。更改第 182 行中的代码以删除 SSL_version 的无效设置:
if(not IO::Socket::SSL::socket_to_SSL($me->{sock},
- SSL_version => "SSLv3 TLSv1")){
+ )){
croak "Couldn't start TLS: ".IO::Socket::SSL::errstr."\n";
}
不要使用损坏且未维护的 Net::SMTP::TLS 或其后继者但又未维护的
Net::SMTP::TLS::ButMaintained 我建议您使用已构建的最新版本的 Net::SMTP支持 SMTP+SSL 和 IPv6。较新的 Perl 版本已默认提供它。
如果无法使用新的 Net::SMTP,您可以使用Net::SSLGlue::SMTP,它会修补旧的 Net::SMTP 版本以添加 SSL 支持。还有 Net::SMTPS 提供类似的功能。
if(不是 IO::Socket::SSL::socket_to_SSL($me->{sock}, SSL_version=>"SSLv3 TLSv1")){
if(不是 IO::Socket::SSL::socket_to_SSL($me->{sock})){
http://www.pclinuxos.com/forum/index.php/topic,143156.msg1223280.html#msg1223280