作為軟體開發人員,有時需要對伺服器上的某些進程進行監控,以便掌握伺服器的運行情況。因此當出現異常情況時,郵件提示是個不錯的選擇,可使開發維護人員及時進行維護處理。
1:利用Mail::Sendmail發送普通郵件
#!/usr/bin/perl
use strict;
use Mail::Sendmail;
sendmail
(
From => '123456@gmail.com',
#使用qq或163作為郵件地址時,需設定123456@gmail.com為白名單(否則qq會認為是垃圾郵件而拒收,163不用設定白名單);測試gmail時,gmail認為是不安全的郵件會拒收
To => '123456@qq.com',
Subject => 'Waring',
Message => "sth bad, pls check!!",
);
註:當perl提示模組不存在時,用cpan Mail::Sendmail安裝。郵件發送失敗時,可查看/var/spool/mail/root日誌找出失敗原因。
2:利用MIME::Lite發送帶附件的郵件
#!/usr/bin/perl
use strict;
use MIME::Lite;
#首先,建立包含郵件各種頭資訊的 MIME::Lite 對象:
my $msg = MIME::Lite->new(
From => '123456@gmail.com',
To => '123465@qq.com',
Subject => 'Warning',
Type => 'multipart/mixed'
);
#然後用 attach 方法添加附件內容:
$msg->attach(
Type => 'auto',
Path => '/usr/local/sbin/ss.pl', #附件路徑
);
MIME::Lite 模組的參數類型決定附件的類型和附件的添加方法:
Path 指定作為附件的檔案的路徑
Filename 指定接受方儲存附件時,附件的預設檔案名稱.如果指定了 Path 參數,那麼預設的檔案名稱就是路徑中的名字
Data 指定附件添加的日期
Type 指定待添加附件的檔案編碼類別型
Disposition 它的值只能是 inline 和 attachment.前者指定接受方開啟郵件的時候附件內容會跟在郵件內文後顯示,而不單獨作為一個附加物.後者指定接受方應該指定一個附件的解碼方 法,並且儲存附件,此時會有提示
$msg->send( ); # 預設的方法是用sendmail規則發送
#$msg->send('smtp', 'mailserver.example.com', Timeout => 30,Debug => 1);# 指定其它的方法
使用MIME::Lite來發送郵件有二種方法 sendmail 和 Net::SMTP.
調用 send 方法時,若第一個參數為“smtp”,則用 Net::SMTP 發送郵件.send的其它參數都傳給 Net::SMTP.不加任何的話就是系統的sendmail.