1 2 3 4 5 6

廣告

網友您好,若是您覺得我寫的工具或文章對您有幫助,
而您或者您的朋友有在博客來購物,可以透過底下連結

如何在博客來購物贊助網站或是點選計數器下方的博客來圖示來讓網站可以永續經營。

2010年9月22日 星期三

如何解決PHP使用utf8編碼寄Email時寄信者跟信件標題有中文時會出現亂碼

您如果是用UTF8的編碼寫寄Email的功能,會發現信件寄出時,寄信者跟信件標題有中文時會出現亂碼,但是信件內容的中文則正常,這是因為,電子郵件標準格式中,表頭的部分不允許使用雙位元的文字,所以必需使用mb_encode_mimeheader()函式將雙位元文字編碼為單位元字串,因mb_encode_mimeheader()預設的字串編碼為西方ISO-8859-1,而我們使用UTF-8編碼所以程式中必需使用mb_internal_encoding()將內部預設編碼改為UTF-8。


1.寄件者跟信件標題有中文會出現亂碼,但是信件內容的中文則正常


2.程式碼(點圖可看比較清楚


<?
mb_internal_encoding('UTF-8');
$mail_from=mb_encode_mimeheader("彰化一整天的Blog",'UTF-8')."<imingho@gmail.com>";
$mail_to=mb_encode_mimeheader("收件人中文姓名",'UTF-8')."<收件人Email>";
$mail_subject=mb_encode_mimeheader("寄信標題",'UTF-8');
$mail_headers="MIME-Version: 1.0\r\n"."Content-type: text/html; charset=utf-8\r\n"."From: $mail_from\r\n";
$mail_headers.="bcc:密件收件者Email\r\n";
if (mail($mail_to, $mail_subject, $mail_message, $mail_headers)<>true)
{
   echo "<font color=red> 寄送失敗!!</font>";
}
?>
參考資料:使用PHP mail()寄送UTF-8編碼之電子郵件

沒有留言:

贊助

彰化一整天粉絲團