請選擇 進入手機版 | 繼續訪問電腦版
搜索
熱搜: 活動 交友 discuz
查看: 3830|回復: 0

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

[複製鏈接]
發表於 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, 2020-9-25 14:20 , Processed in 0.079832 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

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