Re: [請益] mail()的問題

看板PHP作者 (games)時間19年前 (2005/11/02 14:52), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《maluu (lalalalala)》之銘言: : 推一下phpmailer.....我覺得不錯用 : http://phpmailer.sourceforge.net/ : ※ 引述《chweng ()》之銘言: : : 是這樣的 我想做一個線上寄信的系統 所以會用到mail()函數 : : 我的網頁都是用UTF-8編碼的 這樣一來 用這個系統寄出的信也都是UTF-8編碼的 : : 可是我用Outlook Express收信時卻都是亂碼 : : 雖然可以在編碼的地方正確地選回UTF-8 可是總是多一個步驟 : : 而且一收到就是亂碼 還挺容易直接被我當成垃圾信砍了 : : 所以想問一下 是否可以使寄出信件的編碼為BIG5 : : 或是改變信件的檔頭 讓OE不要誤判 : : 如果可以的話 我是很不想把那一頁改回BIG5編碼啦 : : 希望能有其他方法 請問要怎麼做比較好呢? 你可以參考我的作法: 要注意的地方有 1. $author 2. $subject 3. header 的 content_type 作者和標題的中文要用 mb_encode_mimeheader() 做編碼, 如果內碼是 utf-8, 就填 'utf-8', 如果是 'big5 就填 'big5' 例如: $subject = mb_encode_mimeheader("中文標題", "big5", "b"); 第三個參數 'b' 是 base64 編碼, 你也可以改用 'q' (quoted-printable 編碼) 內文的部份可以由 header 的 "Content-Type: " 來設定他的內碼 $to 的部份, 有中文的地方也要用 mb_encode_mimeheader() 轉換 mb_internal_encoding("UTF-8"); // 文字原始的編碼 $from = mb_encode_mimeheader($author, "utf-8", "b"); $from .= "<xxx@aaa.bbb.com.tw>"; $headers = "From: $from\r\n" . "To: $to\r\n" . "MIME-version: 1.0\r\n" . "Content-Transfer-Encoding: 8bit\r\n" . "Content-Type: text/html; charset=utf-8\r\n"; // base64 $subject = mb_encode_mimeheader($subject, "utf-8", "b"); $ret = mail($to, $subject, $content, $headers); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.43.194.80

11/03 17:34, , 1F
多謝分享!
11/03 17:34, 1F
文章代碼(AID): #13Q68HbM (PHP)
討論串 (同標題文章)
文章代碼(AID): #13Q68HbM (PHP)