廣告

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

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

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編碼之電子郵件

贊助

彰化一整天粉絲團

About Me

我的相片

很多人問我為什麼叫"一整天",其實這是有原故的.有一天看一本書.就是說如何介紹自己.裡面說到如何讓別人對你的名字有印象.就要讓別人跟你的名字或是身體的一些特徵有關.比如很胖.就會被別人取小胖或是胖子.或是跟名字有關的諧音,那天看布袋戲中有一個叫”一頁書”的角色.所以我就想我的名字.可以想出什麼字出來.結果我把我的名字"明和",拆成日月和,日月和在一起,就代表白天晚上都在一起.就取名為"一整天",而這個"一整天"跟我的名字有關也方便別人記憶,後來發現"一整天"這個名詞太常被用,所以就在"一整天"前面加上"彰化"變成"彰化一整天",為什麼要加彰化.因為我老家在彰化,所以以後別人要找我的部落格的話.我都會跟他們說,請到yahoo或是google打"彰化一整天"第一筆出現的就是我的Blog. PS:現在只要輸入"一整天"可以找到.

Google+ Followers