pear mail郵件寄送範例-utf8轉big5避免亂碼

pear mail在pear底下實作了許多方便的郵件介面,並透過php原生函式mail、sendmail及smtp來發送信件,也提供郵件位址RFC822的標準驗證。
pear mail郵件寄送範例-utf8轉big5

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();
}

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *