|
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 並不能完全解決通吃問題,所以目前採用此方法中。 |
|