搜索
熱搜: 活動 交友 discuz
查看: 8169|回復: 0
打印 上一主題 下一主題

[PHP] PHP mail() UTF-8 亂碼解決 - 寄件者名稱與信件標題中文亂碼問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2015-6-1 00:19:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
UTF-8內文傳遞是基本款,header內請記得設定編碼:
  1. Content-type:text/html;charset=UTF-8
複製代碼
但寄件者名稱與標題勒? 這問題很有趣,因為這兩項不屬於內文所以mail source就會看出原因了,在多數的mail軟體上應該就能體會到亂碼(如Gmail)。所以用PHP原生mail()函式就得需自行處理編碼。




編碼的處理語法如下:
  1. "=?UTF-8?B?".base64_encode('中文')."?="
複製代碼
就如同BIG5編碼形式,前後需加上前綴後綴,內文則用BASE64編碼,形成一般郵件軟體通吃的編碼。




給個範例:

  1. $from_name = "=?UTF-8?B?".base64_encode('寄件人')."?=";
  2. $subject = "=?UTF-8?B?".base64_encode('主旨')."?=";

  3. $header = "Content-type:text/html;charset=UTF-8" . "\r\n";
  4. $header .= "From: {$from_name} <service@yidas.com>\r\n";
  5. $header .= 'Reply-To: service@yidas.com' . "\r\n";
  6. $header .= ($bcc) ? 'bcc:service@yidas.com' : '';

  7. echo mail('to@demo.com', $subject, 'content', $header);       
複製代碼
方法可自行封裝,另外 mb_internal_encoding 並不能完全解決通吃問題,所以目前採用此方法中。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2024-4-19 12:46 , Processed in 0.016332 second(s), 16 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表