PHP mail功能中文標題亂碼問題

因為工作需求上需要寄電郵功能,所以使用mail function實作了一個寄電郵功能。這次已經不是第一次使用mail function,但因為記性不好,又再一次遇到亂碼問題,於是立刻到Google大神查找解決辦法,看到網上一堆人也遇到相同問題,很快就找到答案。所以這次要好好記錄一下,讓自己印象更加深刻,免得日後又忘記。

標題內容如下

"=?UTF-8?b?".base64_encode(" 中文標題 ")."?="

收信的電郵便能正常顯示中文,如電郵內容需要使用html,電郵的header必須指定格式為Content-type: text/html才能正常使用。

完整的mail function如下

function sendMail() {
    $recipient = "收件人電郵地址";
    $subject = "=?UTF-8?B?" . base64_encode("電郵標題") . "?=";
    $header = "MIME-VERsion: 1.0\r\n";
    $header .= "Content-type: text/html; charset=UTF-8\r\n";
    $header .= "From: " . "=?UTF-8?B?" . base64_encode("寄件人電郵地址") . "?=";
    $header .= "<寄件人電郵地址>";
    $message = "<p>電郵內容</p>";

    return mail($recipient, $subject, $message, $header);
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

驗證碼 * Time limit is exhausted. Please reload CAPTCHA.

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料