php mail發(fā)郵件標(biāo)題中文亂碼的問(wèn)題解決辦法
來(lái)源:程序員人生 發(fā)布時(shí)間:2013-12-17 08:42:27 閱讀次數(shù):4124次
當(dāng)使用下面的PHP語(yǔ)句發(fā)送電子郵件的時(shí)候,如果編碼和接收郵箱編碼不相同,會(huì)發(fā)現(xiàn)郵件的標(biāo)題是亂碼,而郵件正文卻是正確的,如何才能使得郵件標(biāo)題不是亂碼呢?
- $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);
先用函數(shù)base64_encode() — 使用 MIME base64 對(duì)數(shù)據(jù)進(jìn)行編碼,標(biāo)題字符串前加編碼類型例如: =?UTF-8?B?,標(biāo)題字符串后加:?=,例如:
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
將上面一句添加到代碼之中,這樣,發(fā)送的中文郵件標(biāo)題就不是亂碼了,代碼如下:
- <?php
- $to = 'junhuibai@gmail.com';
- $subject = iconv('','GB2312','親愛(ài)的'.$s_user.',請(qǐng)取回您的密碼!');
- $subject = "=?GB2312?B?".base64_encode($subject)."?=";
- $message = $s_user.',您好!'.
- '您的新密碼是:'.$pwd.''.
- '為了保證您用戶的安全性,請(qǐng)登錄更改您的密碼。'.
- '此信是由系統(tǒng)發(fā)出,系統(tǒng)不接收回信,請(qǐng)勿直接回復(fù)!';
-
- $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();
- ?>
最終解決辦法,代碼如下:
標(biāo)題亂碼:$subject = "=?UTF-8?B?".base64_encode('郵箱驗(yàn)證 —— ' . SITE_NAME)."?=";
正文亂碼,設(shè)置header : charset=utf-8'
- $headers = 'From: webmaster@webinno.cn' . "rn" .
- 'Content-type: text/html; charset=utf-8' . "rn" .
-
- 'X-Mailer: PHP/' . phpversion();
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)