郵件,
sendmail,
Mail::Mailer,
啞劇::精簡版
等壹下。這些方法都可以實現郵件的發送,視場合而定。
1.郵件模式
這種調用系統命令的方式,是最簡單的方式(可用我個人測試)
my $ mail _ title = " test _ mail
my $mail_body = "ffmpeg錯誤";
my $ mail _ to = ' xxxxxx @ qq.com
my $ cmd _ mail = " echo $ mail _ body \ | mail-s $ mail _ title-CB $ mail _ to ";
系統($ cmd _ mail);
2.郵件::郵件模式
#!/usr/bin/perl
使用Mail::Mailer;
my $ from _ address =“”;
my $ to _ address = ' xxxxxxxx @ QQ . com & gt;';
my $subject = "郵件標題";
my $mail_body = "hello world!";
my $ Mailer = Mail::Mailer-& gt;new(" sendmail ");
我的$ mailer-& gt;打開({ From = & gt$from_address,
To = & gt$to_address,
Subject = & gt$subject,
})或者死("打不開:$!\ n ");
print $ mailer $ mail _ body
$ mailer-& gt;close();
3.MIME::Lite模式
通過普通郵件發送(我自己通過測試)。
#!/usr/bin/perl
使用MIME::Lite;
使用MIME::Words qw(encode _ MIME Words);
my $subject = encode_mimewords("測試郵件",' Charset ',' GB 2312 ');
my $ data = " test
my $ to _ address = ' xxxxxxx @ QQ . com ';
my $ msg = MIME::Lite-& gt;新(
From = & gtroot@localhost ',
To = & gt$to_address,
Subject = & gt$subject,
Type = & gt文本/html ',
Data = & gt$data,
編碼= & gtbase64 ',
)或die“創建容器失敗:$!”;
$ msg-& gt;attr(' content-type . charset ' = & gt;GB 2312’);
$ msg-& gt;send('smtp ',' localhost ',Debug = & gt0);
如果上述程序遇到以下錯誤提示:
SMTP mail()命令失敗:
5 . 5 . 4 & lt;root @ localhost & gt...發件人地址需要真實域名
您需要檢查您主機名,
#卡特彼勒/etc/主機
並將“root@localhost”替換為“root@hostname”。
此外,還可以使用MIME::Lite發送中文HTML郵件,防止被ESP查殺為垃圾郵件。
(摘自',
To = & gt$to_address,
Subject = & gt$subject,
Type = & gt文本/html ',
Data = & gt$data,
編碼= & gtbase64 ',
)或die“創建容器失敗:$!”;
$ msg-& gt;attr(' content-type . charset ' = & gt;GB 2312’);
$ msg-& gt;send('smtp ',' localhost ',Debug = & gt0);
}
幾個常識點:
A.標題必須用MIME::Words編碼,這是很多人忽略的。
B.MIME::Lite構造字母時,不要搞錯類型。比如只是壹封沒有附件的HTML郵件,類型是text/html。
21CN的webmail郵件,不管有沒有附件,類型都是multipart/mixed,結果直接被Gmail扔進垃圾箱。
C.要選擇信件的傳輸編碼,通常使用base64和quoted-printable。我推薦base64。
D.應該正確設置信件正文的內容類型字符集,例如中文GB2312。
E.最後壹句$ msg-& gt;send('smtp ',' localhost ',Debug = & gt0)調用Net::SMTP發送消息。只要在這臺機器上安裝MTA如Postfix。這個發送IP最好是壹個信譽好的,不在RBL列表如sorbs,spamcop,spamhaus等中的IP。
F.發送IP最好有反向解析(PTR),否則肯定無法發送AOL之類的郵件來驗證反向解決方案。
G.最好發件人地址確實存在,但是不要用知名網站的免費郵箱,比如From = & gtAbc@126.com ',那就基本發不出去了。
為什麽?因為SPF是在126.com上設置的,接收方的MTA很可能會驗證這個SPF。當然,妳的IP不在126的SPF裏,所以無法通過驗證。
變量h. $data包含信件正文的HTML代碼。這個正文不能有太多的鏈接和圖片,否則很容易被Spamassassin等反垃圾軟件查殺。
我最後,控制發送的頻率。大量發送會向所有反垃圾郵件系統報警,將妳列入黑名單。
4.郵件::發送郵件模式