pear mail郵件寄送範例-utf8轉big5避免亂碼
pear mail在pear底下實作了許多方便的郵件介面,並透過php原生函式mail、sendmail及smtp來發送信件,也提供郵件位址RFC822的標準驗證。
php發展這麼多年,郵件相關函式的進步實在不大,由其在中文編碼部份,依然麻煩…
現在大部份系統實作上都是使用utf8編碼,偏偏不少收件者的webmail只能使用單一編碼,big5和utf8無法並存顯示。
所以就算是做多國語言版本的系統,寄給台灣人的郵件還是建議轉換為big5寄出,要不然一定會有抱怨收到亂碼信…
雜七雜八講那麼多,還是看看下述pear的基本寄送範例:
//變數設定:$v1寄件者名稱, $v2寄件者郵件, $v3收件者郵件 //$v4郵件主旨, $v4郵件內容 $v1 = '時間不等於金錢'; $v2 = 'andy@diimii.com'; $v3 = 'penchih@gmail.com'; $v4 = '這是測試信' $v5 = 'hello 測試啦! 881'; //設定參數寄出文字信,編碼函式可用mb_convert_encoding或iconv //如果寄件者只需顯示郵件 $headers['From'] = $v2 //Reply-To與Return-path建議要設,若不設,可能會被收件者判定spam require_once('Mail.php'); $headers['From'] = '=?big5?B?'.base64_encode(mb_convert_encoding($v1,'big5','utf-8')).'?= <'.$v2.'>'; $headers['To'] = $v3; $headers['Subject'] = mb_convert_encoding($v4,'big5','utf-8'); $headers['Reply-To'] = $v2; $headers['Content-Type'] = 'text/plain; charset=big5'; $headers['Return-path'] = $v2; $content = mb_convert_encoding($v5,'big5','utf-8'); //啟動寄出 $pmail = &Mail::factory('mail'); $pmail->send($v3,$headers,$content); //錯誤處理 if(!PEAR::isError($pmail)) { echo '完成寄出'; } else { echo 'error:'.$pmail->getMessage(); }