常遇到的問題是,「郵件標題」或「寄件者」是亂碼的問題
主要的原因在於,電子郵件標準格式中,
表頭的部分不允許使用雙位元的文字,
所以,使用mb_encode_mimeheader()函式
將雙位元文字編碼為單位元字串。

範例:
mb_internal_encoding('UTF-8');
$subject=mb_encode_mimeheader('訂單', 'UTF-8');
$message= $html; //HTML格式的信件內容
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .=
"From: ".mb_encode_mimeheader('訂購網', 'UTF-8')." <xxxx@xxxx.xxx.xx>\r\n";
mail($to,$subject,$message,$headers);

因mb_encode_mimeheader()預設的字串編碼為西方ISO-8859-1,
而此範例使用UTF-8編碼中文字,
故程式中需使用mb_internal_encoding()將內部預設編碼改為UTF-8

參考資料:
最新PHP+MySQL+AJAX網頁程式設計(旗標出版)

Posted by jck11 at 痞客邦 PIXNET Comments(3) Trackback(0) Hits(2157)


open trackbacks list Trackbacks (0)

Comments (3)

Post Comment
  • 謝謝您!

    您太棒了!幫小弟解決了一個大難題。

    謝謝。
  • 我還是沒法解決問題

    我已經照上面的做了,可是還是沒辦法解決問題,會不會是因為我用的serve的系統是linux???
  • 使用PHP mail()寄送UTF-8編碼之電子郵件

    3Q~很好的教學

Comment Permissions: Allow commenting

Leave Comment

*Name/Nickname
E-mail
Personal Website
Comment Title
*Comment
* Private Comment