354使用<cr> <lf>结束数据。<cr> <lf> perl使用Net :: SMTP:

时间:2016-05-19 02:02:36

标签: perl smtp

我正在编写用于发送电子邮件和附加zip文件的perl脚本但是有错误      

运行代码时

以下是错误:

        Net::SMTP::SSL=GLOB(0x1b79e68)>>> RCPT TO:<ttranquang@tiaxa.as>
        Net::SMTP::SSL=GLOB(0x1b79e68)<<< 250 2.1.5 Ok
        Net::SMTP::SSL=GLOB(0x1b79e68)>>> DATA
        Net::SMTP::SSL=GLOB(0x1b79e68)<<< 354 End data with <CR><LF>.<CR><LF>

==

$msg = MIME::Lite->new(
        To =>'ttranquang@tiaxa.as',
        Subject =>'VTT:Daily Report ['.$TimeDate.']',
        Type    => 'multipart/mixed'
    );
    ### Create a part:
    $part = MIME::Lite->new(
        Top      => 0,
        Type     =>'text/html',
        Data     =>'<H1>Daily Report</H1>',
    );
    $part->attr('content-type.charset' => 'UTF-8');

    $part->add('X-Comment' => 'A report for you');
    $msg->attach($part);
          $msg->attach(
                        Type     => 'application/zip',
                        Path     => '/home/appaxa/scripts/rommel/send_report',
                        Filename => 'dailyreport.zip',
                        Dispostion => 'attachment'
                    );
    $msg->send();

my $smtp;
$smtp = Net::SMTP::SSL->new($host, Port=>465, Debug   => 1,
                           SSL     => 0,) or die "Can't connect";
$smtp->auth($user, $pass)                 or die "Can't authenticate:".$smtp->message();
$smtp->mail('xtime@tel.co')       or die "Error:".$smtp->message();
$smtp->to('ttranquang@tiaxa.as') or die "Error:".$smtp->message();

$smtp->data()                    or die "Error:".$smtp->message();
$smtp->datasend($msg) or die "Error:".$smtp->message();
$smtp->dataend()                 or die "Error:".$smtp->message();
$smtp->quit()                    or die "Error:".$smtp->message()

这里的问题是什么?谢谢大家。

1 个答案:

答案 0 :(得分:1)

$smtp->datasend($msg) or die "Error:".$smtp->message();

$msg是MIME :: Lite对象,而不是字符串。 你想要的是一个字符串,即$msg->as_string

除此之外,您之前正在调用$msg->send,这意味着它已尝试通过默认传输发送消息。除非你想要发送两次消息,否则这没有任何意义。