php mail發郵件標題中文亂碼的問題解決辦法
來源:程序員人生 發布時間:2013-12-17 08:42:27 閱讀次數:4136次
當使用下面的PHP語句發送電子郵件的時候,如果編碼和接收郵箱編碼不相同,會發現郵件的標題是亂碼,而郵件正文卻是正確的,如何才能使得郵件標題不是亂碼呢?
- $subject = stripslashes($the_post['Title']);
- $headers = "MIME-Version: 1.0rn";
- $headers .= "Content-type: text/plain; charset=utf-8rn";
- $headers .= "Content-Transfer-Encoding: 8bitrn";
- $message = stripslashes(strip_tags($the_post['Content']));
- mail($to, $subject, $message, $headers);
先用函數base64_encode() — 使用 MIME base64 對數據進行編碼,標題字符串前加編碼類型例如: =?UTF-8?B?,標題字符串后加:?=,例如:
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
將上面一句添加到代碼之中,這樣,發送的中文郵件標題就不是亂碼了,代碼如下:
- <?php
- $to = 'junhuibai@gmail.com';
- $subject = iconv('','GB2312','親愛的'.$s_user.',請取回您的密碼!');
- $subject = "=?GB2312?B?".base64_encode($subject)."?=";
- $message = $s_user.',您好!'.
- '您的新密碼是:'.$pwd.''.
- '為了保證您用戶的安全性,請登錄更改您的密碼。'.
- '此信是由系統發出,系統不接收回信,請勿直接回復!';
-
- $headers = 'From: junhuibai@tom.com' . "rn" .
- 'Reply-To:junhuibai@tom.com' . "rn" .
- 'X-Mailer: PHP/' . phpversion();
-
- if(mail($to, $subject, $message,$headers))
- echo'ok';
- else
- echo 'no';
- phpinfo();
- ?>
最終解決辦法,代碼如下:
標題亂碼:$subject = "=?UTF-8?B?".base64_encode('郵箱驗證 —— ' . SITE_NAME)."?=";
正文亂碼,設置header : charset=utf-8'
- $headers = 'From: webmaster@webinno.cn' . "rn" .
- 'Content-type: text/html; charset=utf-8' . "rn" .
-
- 'X-Mailer: PHP/' . phpversion();
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈