常遇到的問題是,「郵件標題」或「寄件者」是亂碼的問題
主要的原因在於,電子郵件標準格式中,
表頭的部分不允許使用雙位元的文字,
所以,使用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網頁程式設計(旗標出版)

jck11 發表在 痞客邦 PIXNET 留言(5) 人氣()


留言列表 (5)

發表留言
  • A-Li
  • 謝謝您!

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

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

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

    3Q~很好的教學
  • Bubuto
  • 非常感謝,問題已解決。
  • 阿隆
  • 近期建了個woocommerce ,但有個--關於訂單郵件 客戶端會收到亂碼問題ㄧ直無法解決😭😭😭

    (HTML格式出現???的亂碼,但若Text格式是可以正常顯示的)

    請各位大哥是否能伸出援手幫小弟ㄧ把,非常感激不盡😄😄😄