中央論壇 - CENTER BBS
標題:
PHP mail() UTF-8 亂碼解決 - 寄件者名稱與信件標題中文亂碼問題
[打印本頁]
作者:
死神
時間:
2015-6-1 00:19
標題:
PHP mail() UTF-8 亂碼解決 - 寄件者名稱與信件標題中文亂碼問題
UTF-8內文傳遞是基本款,header內請記得設定編碼:
Content-type:text/html;charset=UTF-8
複製代碼
但寄件者名稱與標題勒? 這問題很有趣,因為這兩項不屬於內文所以mail source就會看出原因了,在多數的mail軟體上應該就能體會到亂碼(如Gmail)。所以用PHP原生mail()函式就得需自行處理編碼。
編碼的處理語法如下:
"=?UTF-8?B?".base64_encode('中文')."?="
複製代碼
就如同BIG5編碼形式,前後需加上前綴後綴,內文則用BASE64編碼,形成一般郵件軟體通吃的編碼。
給個範例:
$from_name = "=?UTF-8?B?".base64_encode('寄件人')."?=";
$subject = "=?UTF-8?B?".base64_encode('主旨')."?=";
$header = "Content-type:text/html;charset=UTF-8" . "\r\n";
$header .= "From: {$from_name} <service@yidas.com>\r\n";
$header .= 'Reply-To: service@yidas.com' . "\r\n";
$header .= ($bcc) ? 'bcc:service@yidas.com' : '';
echo mail('to@demo.com', $subject, 'content', $header);
複製代碼
方法可自行封裝,另外 mb_internal_encoding 並不能完全解決通吃問題,所以目前採用此方法中。
歡迎光臨 中央論壇 - CENTER BBS (https://www.centerbbs.com/)
Powered by Discuz! X3