PHP 用寄信時主旨亂碼

因為{自己, 朋友*}都有這樣的困擾,所以記錄下來方便以後查。

在使用 PHP 裡的 mail() 來寄信時,如果使用的不是 ASCII 或 ISO8859-1 的編碼,像主旨(Subject)或是寄件者(From:)的欄位就會變成亂碼,解決的方法就是用 BASE64 編碼一下,以下是主旨用 UTF-8 作為字元編碼的範例:

[code lang="php"]$new_subject = "=?UTF-8?B?" . base64_encode($orig_subject) . "?=";[/code]

同理,如果是寄件者的話(注意From: 一起拿去 encode 了 XD):

[code lang="php"]
$from = "From: =?UTF-8?B?" . base64_encode($orig_from) . "?=rnrn"; // 兩個 rn 是因為 mail header 的處理方式
[/code]

  • 是嗎???

  • chiauyun

    [quote comment=””]大感謝 超好用的知識喔^^[/quote]