Net :: SMTP:Net :: Cmd :: _ is_closed():命令通道上的意外EOF [perl]

时间:2015-12-15 10:33:45

标签: windows perl email

我试图通过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

1 个答案:

答案 0 :(得分:1)

" ... SSL版本SSLv2不受支持" - 我觉得您的IO :: Socket :: SSL版本不是原始版本,但可能是收到(错误)修补程序以解决破坏Net :: SMTP :: TLS问题的版本。请确保您已安装未更改的当前版本的IO :: Socket :: SSL。 - Steffen Ullrich