PHPMailer中文亂碼問題的解決方法

以前用PHPMailer幫人家開發了用於發郵件的網站,因爲是英文客戶,因此中文沒怎麼測試,最近反饋說 中文亂碼!php

其實,以前是有發現標題中會出現中文了亂碼,已經經過相應的代碼解決。html

收到反饋以後,查看了html內容編碼設置是utf-8應該沒有問題,我又使用本身開發的系統發了一個郵件,中文顯示正常。到這裏我感受是他們反饋的問題不對,是否是什麼特例?學習

 

我正想着,無心中手機收到郵件通知,打開一看,中文所有亂碼了。我滴媽呀,原來是網頁所有顯示正常,手機客戶端顯示亂碼,從何下手呢??個人代碼文件和郵件的html內容都是utf-8編碼的。測試

---------------------------------最後發現問題以下-----------------------------------------網站

 

PHPMailer.class.php 類裏面的默認編碼是iso-8859-1.這應該是一個歐洲的編碼,因此問題在這裏,把默認編碼改爲utf-8, 而後代碼裏設置一下google

$mail = new PHPMailer();
$mail->Charset='UTF-8′;編碼

 

-----------------------------------------phpmailer 亂碼總結-----------------------------------------------------------------------.net

1:打開phpmailer 核心文件 class.phpmailer.php , 將 public $CharSet = ‘iso-8859-1′; 改成 public $CharSet = ‘UTF-8′;設計

至於爲何要將'iso-8859-1′改成‘UTF-8',請google或百度一下'iso-8859-1′就清楚。code

 

2:設置郵件的編碼;

$mail = new PHPMailer();

$mail->Charset='UTF-8′;

相信有很多朋友是設置成」GBK」或「GB2312」的,我開始也是,後來瞭解到Mail是國際化的,若是想在像Gmail等那樣的國際化郵箱正確顯示中文,請將編碼設置爲「UTF-8」;

 

3,:設置標題編碼;這裏可能有人會問,都設置了郵件的編碼了,還設置標題編碼作什麼。。。 若是您測試過多種郵箱,你會發現標題中文是亂碼的,沒錯,即便您設置了 $mail->Charset=」UTF-8″;既然學習php應該多看看php手冊或留意php.net ,標題亂碼的解決辦法我是在php官網找到答案的 hhtp://.www.php.net/mail。$mail->Subject =」信件標題」; 改成 $mail->Subject = 「=?utf-8?B?」 . base64_encode(「信件標題」) . 「?=」;「設計此種編碼是爲了使二進制數據能夠經過非純 8-bit 的傳輸層傳輸,例如電子郵件的主體。」(來自php手冊 base64_encode() )

相關文章
相關標籤/搜索