我试图通过perl通过yahoo smtp服务器发送电子邮件,我的代码在linux上运行没有错误但是当我在Windows Server 2008 r2 perl sys上运行此代码时:
净:: SMTP>>>净:: SMTP(3.07)
净:: SMTP>>>净:: Cmd的(3.07)
净:: SMTP>>>出口(5.72)
净:: SMTP>>> IO ::插座:: IP(0.37)
净:: SMTP>>> IO ::插座(1.38)
净:: SMTP>>> IO ::手柄(1.35)
净:: SMTP = GLOB(0x2b41c30)LT;<< 220 smtp.mail.yahoo.com ESMTP准备就绪
净:: SMTP = GLOB(0x2b41c30)GT;>> EHLO smtp.mail.yahoo.com
净:: SMTP = GLOB(0x2b41c30)LT;<< 250-smtp.mail.yahoo.com
净:: SMTP = GLOB(0x2b41c30)LT;<< 250-PIPELINING
净:: SMTP = GLOB(0x2b41c30)LT;<< 250-SIZE 41697280
净:: SMTP = GLOB(0x2b41c30)LT;<< 250-8 BITMIME
净:: SMTP = GLOB(0x2b41c30)LT;<< 250 STARTTLS
净:: SMTP = GLOB(0x2b41c30)GT;>> STARTTLS
净:: SMTP = GLOB(0x2b41c30)LT;<< 220 2.0.0启动TLS
净:: SMTP = GLOB(0x2b41c30)GT;>> RCPT TO:
Net :: SMTP:Net :: Cmd :: getline():命令通道上的意外EOF:错误 test.pl第16行的文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第17行的错误文件描述符。
我的代码是:
use Net::SMTP 3.03;
my $mailer = Net::SMTP->new(
'smtp.mail.yahoo.com',
Hello => 'smtp.mail.yahoo.com',
Port => 587,
Debug => 1,
);
$mailer->starttls();
$mailer->auth('test','123');
#!$mailer->mail('test@yahoo.com');
$mailer->to('test@yahoo.com');
$mailer->data();
$mailer->datasend('From: test@yahoo.com \r\n');
$mailer->datasend('To: test@yahoo.com \r\n');
$mailer->datasend('Subject: testing \r\n');
$mailer->datasend('Content-type: text/html \r\n\n');
$mailer->datasend('\n');
$mailer->datasend('test test test\r\n');
$mailer->dataend();
$mailer->quit;
问题是什么?
结果用" perl -MIO :: Socket :: SSL = debug4 test.pl"
净:: SMTP>>>净:: SMTP(3.07)
净:: SMTP>>>净:: Cmd的(3.07)
净:: SMTP>>>出口(5.72)
净:: SMTP>>> IO ::插座:: IP(0.37)
净:: SMTP>>> IO ::插座(1.38)
净:: SMTP>>> IO ::手柄(1.35)
净:: SMTP = GLOB(0x2dade80)LT;<< 220 smtp.mail.yahoo.com ESMTP准备就绪
净:: SMTP = GLOB(0x2dade80)GT;>> EHLO smtp.mail.yahoo.com
净:: SMTP = GLOB(0x2dade80)LT;<< 250-smtp.mail.yahoo.com
净:: SMTP = GLOB(0x2dade80)LT;<< 250-PIPELINING
净:: SMTP = GLOB(0x2dade80)LT;<< 250-SIZE 41697280
净:: SMTP = GLOB(0x2dade80)LT;<< 250-8 BITMIME
净:: SMTP = GLOB(0x2dade80)LT;<< 250 STARTTLS
净:: SMTP = GLOB(0x2dade80)GT;>> STARTTLS
净:: SMTP = GLOB(0x2dade80)LT;<< 220 2.0.0启动TLS
DEBUG:... / IO / Socket / SSL.pm:568:全局错误:SSL版本SSLv2没有 支持的
净:: SMTP = GLOB(0x2dade80)GT;>>邮件来自:
Net :: SMTP:Net :: Cmd :: getline():命令通道上的意外EOF:错误 test.pl第15行的文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第16行的错误文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第16行的错误文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第17行的错误文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第17行的错误文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第18行的文件描述符错误。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第19行的文件描述符错误。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第20行的文件描述符错误。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第21行的文件描述符错误。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第22行的文件描述符错误。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第23行的错误文件dscriptor。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第24行的文件描述符错误。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: test.pl第25行的错误文件描述符。
Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF: 坏文件d
答案 0 :(得分:1)
" ... SSL版本SSLv2不受支持" - 我觉得您的IO :: Socket :: SSL版本不是原始版本,但可能是收到(错误)修补程序以解决破坏Net :: SMTP :: TLS问题的版本。请确保您已安装未更改的当前版本的IO :: Socket :: SSL。 - Steffen Ullrich