bluehost的wordpress乱码解决方案,借花献佛

时间:2007-04-25 16:13:11      类别:Web技术|WEB Tech, Wordpress      本文链接:生活点滴Enjoy Life

使用bluehost搭建wordpress都有这个问题,收到评论的邮件全部是乱码,通过搜索引擎,我找到了ishawn给出的解决办法,因此将原文引用在下面,所有链接无任何修改:

以前使用国内的空间没有遇到过这种问题,可以确定是编码不同造成的。Google了一下相关的内容,发现我和别人的遭遇不太一样。大多数Wordpress使用者收到的邮件仅仅是标题乱码,而我接收到的邮件连内容都是。Cube同学写了一个插件来 解决邮件标题乱码的问题,这个插件的原理是替换掉Pluggable.php内的邮件发送部分,自行指定该部分的编码。结合我自己的情况,将 Pluggable.php内的wp_mail部分重写,分别指定邮件头、邮件标题和邮件正文的编码为base64也就是utf-8就可以了。考虑到日后 升级会比较麻烦,也可以将修改后的wp_mail部分写入my-hacks.php这个文件,启用my-hacks.php支持以后,这个文件内的修改内 容就会替换掉原有pluggable.php内的功能字段。顺便附上修改好的my-hacks.php,使用时先到后台的“选项-杂项”内开启my-hacks.php支持,然后将其放置在wp根目录下即可。


如果你连下载都懒得做的话,下面我给出了my-hacks.php文件的php代码:

  1. < ?php
  2. function wp_mail($to, $subject, $message, $headers = '') {
  3.         $subject = '=?' . get_option('blog_charset') . '?B?' . base64_encode($subject) . '?=';
  4.  
  5.         $mailcontents = explode("\n\n--", $message, 2);
  6.         if (count($mailcontents) == 1) {
  7.                 $message = base64_encode($mailcontents[0]);
  8.         } else {
  9.                 $message = base64_encode($mailcontents[0]) . "\n\n--" . $mailcontents[1];
  10.         }
  11.  
  12.         if ($headers == '') {
  13.                 $headers = "MIME-Version: 1.0\n" .
  14.                         "From: wordpress@" . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])) . "\n" .
  15.                         "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n";
  16.         }
  17.         $mailheaders = explode("\n", $headers);
  18.         $headers = '';
  19.         foreach ($mailheaders as $line) {
  20.                 $mailheader = explode(":", $line);
  21.                 $fieldType = trim($mailheader[0]);
  22.                 if ($fieldType == 'To' || $fieldType == 'From' || $fieldType == 'Reply-To') {
  23.                         $field = trim(str_replace('"', '', $mailheader[1]));
  24.                         if (strpos($field, '<') !== false && strpos($field, '>')) {
  25.                                 $fieldAddr = trim(substr($field, strpos($field, '< ') + 1));
  26.                                 $fieldAddr = str_replace('>', '', $fieldAddr);
  27.                                 $fieldName = '=?' . get_option('blog_charset') . '?B?' . base64_encode(trim(str_replace('"', '', substr($mailheader[1], 0, strpos($mailheader[1], '< ') - 1)))) . '?=';
  28.                         } else {
  29.                                 $fieldAddr = $field;
  30.                                 $fieldName = $fieldAddr;
  31.                         }
  32.                         $headers .= "$fieldType: $fieldName <$fieldAddr>\n";
  33.                 } else {
  34.                         if ($line != '') {
  35.                                 $headers .= "$line\n";
  36.                         }
  37.                 }
  38.         }
  39.         if (!strpos($headers, 'Content-Transfer-Encoding')) {
  40.                 $headers .= "Content-Transfer-Encoding: base64\n";
  41.         }
  42.  
  43.         return mail($to, $subject, $message, $headers);
  44. }
  45. ?>

该日志未加标签
发表于 2007-04-25 16:13:11 目录:Web技术|WEB Tech, Wordpress [RSS 2.0] 你可以发表评论, 或者从您的网站 trackback
如果您喜欢本blog,欢迎你的feed订阅,谢谢你的支持

前6排已经被占据了 快抢好位置哦

  • 1楼 milo 在 2007.04.26 23:03发表评论如下:

    Great!!

  • 2楼 islet8 在 2007.05.14 09:14发表评论如下:

    多谢老大

  • [...] 另外,筆者使用Bluehost搭配WordPress,有遇到發送UTF-8編碼的郵件亂碼問題,導致訪客訂閱評論後所收到的信件之標題與內文都是亂碼,不過,這個問題已經有人解決囉~ 請參閱bluehost的wordpress乱码解决方案。簡言之就是使用my-hacks.php來改寫wordpress的wp_mail(),使其發送的郵件是採用base64編碼格式,如此一來就可以顯示中文了~ 該文章的作者有提供一個修改好的my_hack.php(本站備份),大家可以前往下載該檔案或是直接下載本站的備份檔。 (記得要啟用使用my-hacks.php的選項,啟用位置: “Optons”->”Miscellaneous”->勾選”Use legacy my-hacks.php file support”) [...]

  • 4楼 Heyi 在 2007.09.23 00:20发表评论如下:

    我的wordpress博客也是乱码问题了。哎。谢谢,来找下解决方法。
    欢迎互访:http://heyi.name

  • 5楼 這裡│更換主機.資料轉換完畢! » 回。到。原。點 在 2008.03.01 12:33发表评论如下:

    [...]  此外,我在網上搜尋BH的相關資料時,找到酷彼得的這篇文章,同樣也讓我受益良多,尤其是其中提到的BH搭配WP發送郵件時的亂碼問題的解決方案,我馬上就遵循此法趕緊做了修復的動作,相信有訂閱本站文章回應的朋友們日後應該不會收到亂碼信件了。 [...]

  • 6楼 xiaomo 在 2008.06.30 10:42发表评论如下:

    多谢 去试试~

  • 转到第
(Required)
(Required, not published)
如果留言未显示请不要重复留言,我将为你恢复!


生活点滴Enjoy Life is proudly powered by WordPress | admin| About Us | cosbeta| Bluehost| site map 0.456s & 25