用Net::SMTP發送帶附件的郵件

use Net::SMTP;
use MIME::Lite;

my $DESTINATION = '3.3.3.3';
my $DOMAIN1             = "pc1.com";
my $DOMAIN2             = "pc2.com";
my $MAIL_USR1           = 'test001';
my $PSW1                = 'test001';
my $MAIL_USR2           = 'test002';
my $PSW2                = 'test002';
my $mail_from    = $MAIL_USR1."@".$DOMAIN1;
my $mail_to      = $MAIL_USR2."@".$DOMAIN2;
my $mail_subject = "SMTP test";
my $mail_attach  = "/tmp/conf/klez.h.bin"; //這個參數是給後面Path傳的,必須寫到文件名,不能只寫到文件前面的路徑部分,否則傳過去只有文件名而沒有文件內容。
my $attach_name  = "klez.h.bin";
my $mail_content = $mail_subject;
$smtp = Net::SMTP->new(
              $DESTINATION,
              Port=>25,
              Hello=>"pc1.com",
              Debug=>1
);

die("smtp undefined: $@") if !defined $smtp;
    
#my $auth_return = $smtp->auth($MAIL_USR1,$PSW1);
#die("auth error: $@") if !defined $auth_return;
    
my $msg=MIME::Lite->new(
        From    => $mail_from,
        To      => $mail_to,
        Subject => $mail_subject,
        Data    => $mail_content,);
    
$msg->attach(
        Type     => 'AUTO',
        Path     => $mail_attach,
        Filename => $attach_name,);
    
my $content_string=$msg->as_string() or die "$!";
    
$smtp->mail($mail_from);
$smtp->to($mail_to);
$smtp->data();
$smtp->datasend($content_string);
$smtp->dataend();
$smtp->quit;

發佈了66 篇原創文章 · 獲贊 34 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章