我正在尝试使用 perl 发送电子邮件。我的代码在 linux 上运行没有错误。但是当我在 windows server 2008 r2 上运行我的代码时,perl sys :
无法启动 TLS:不支持 SSL 版本 SSLv3。
我的 perl 代码:
#!/usr/bin/perl
use Net::SMTP::TLS;
use 5.010;
my $mailer = new Net::SMTP::TLS(
'smtp.mail.yahoo.com',
Hello => 'smtp.mail.yahoo.com',
Port => 587,
User => 'someEmail@yahoo.com',
Password=> 'password');
$mailer->mail('someEmail@yahoo.com');
$mailer->to('someEmail@yahoo.com');
$mailer->data();
$mailer->datasend("From: someEmail@yahoo.com\n");
$mailer->datasend("To: someEmail@yahoo.com\n");
$mailer->datasend("Subject: test&test\n");
$mailer->datasend("Content-type: text/html\n\n");
$mailer->datasend("\n");
$mailer->datasend"test test ste tset\n");
$mailer->dataend();
$mailer->quit;
Run Code Online (Sandbox Code Playgroud)
我也试过:http : //www.techieshelp.com/how-to-enable-ssl-3-0-server-2008-sbs-2008/
Net::SMTP::TLS 很旧,很旧。最后一个版本是 2006 年的。而且有问题。这些错误会导致您遇到的问题。有一个非官方的替代品 Net::SMTP::TLS_ButMaintained 但这也认为自己已被弃用(2013 年的最新版本)。
摆弄 Windows 的 SSL 控件也无济于事,因为 Perl 不会使用来自 Windows 的 SSL 堆栈,而是使用 OpenSSL。
我建议您改用Net::SMTP的最新版本。从 3.0 版开始,它支持两种 TLS,即显式使用 STARTTLS(这就是您需要的)和隐式直接连接到 SSL 端口。它甚至支持 IPv6。
使用当前的 Net::SMTP、最近的 IO::Socket::SSL(对于 SSL 部分)和 Authen::SASL(对于登录部分),您可以执行以下操作:
use strict;
use warnings;
use Net::SMTP 3.03;
my $mailer = Net::SMTP->new(
'smtp.mail.yahoo.com',
Hello => 'smtp.mail.yahoo.com',
Port => 587,
);
$mailer->starttls();
$mailer->auth('someEmail@yahoo.com','password');
$mailer->mail(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
732 次 |
| 最近记录: |