因為 WordPress 的 wp_mail() 沒轉,PHP 的 mail()
也沒轉 ,底層的 sendmail 因為不知道編碼是什麼,當然也不能亂轉,於是就... XD
用 Google 找了一下,在 解决WP邮件通知在gmail中的标题乱码 這篇給了幾個方法,其中不需要額外的 library 大概就是在 pluggable-functions.php
內的 wp_mail()
最後面 return
的地方改成:
return @mail($to, "=?UTF-8?B?" . base64_encode($subject) . "?=", $message, $headers);
我把他改成:
return @mail($to, "=?" . get_settings('blog_charset') . "?B?" . base64_encode($subject) . "?=", $message, $headers);
這樣就 okay 了 :p
PS:其實我不確定能不能 work XD 我是打算 post 一篇,然後測試一下看看標題正不正確 XD
Update:目前看起來跑得很好:
Update:我另外修改了 From:
的部分,這個部分也需要正確的 encoding,同樣一個檔案裡面,把:
$from = "From: \"$blogname\" <$wp_email>";
改成:
$from = "From: =?" . get_settings('blog_charset') . "?B?" . base64_encode("\"$blogname\"") . "?= <$wp_email>";
另外把:
$from = "From: \"$comment->comment_author\" <$wp_email>";
改成:
$from = "From: =?" . get_settings('blog_charset') . "?B?" . base64_encode("\"$comment->comment_author\"") . "?= <$wp_email>";
一樣,先測一陣子看看,沒問題就到 WordPress Trac 上送 ticket 請他們 patch。