总结:HostMonster外发Wordpress邮件中文乱码的问题
如果你是使用WordPress,又刚好是租用Hostmonster的虚拟主机,可能会遇到邮件乱码,而且由Wordpress发出的邮件寄件者是
xxx@host62.hostmonster.com,如果你想解決乱码问题,并将並將邮件寄件者改为自己的EMAIL,可以按照下面方式修改。
引起问题的主要原因是:默认不支持非ASCII编码的信息传递。(参考论坛以前的相关帖)
放狗搜索了一下,总结几个解决的方法
方法一:
使用mb_send_mail代替mail函数,目的是在提交信息给MTA前,将信息使用适合的字符重新编码。
先下载其制作的
my-hacks.rar (4.48 KB)
文件,
修改后缀名为.php,修改第13、66行的发信地址为您的电邮地址,并上传至Wordpress
根目录。然后登陆您的后台,在“设置”-“其他”中,将“兼容旧版 WordPress 中的 my-hacks.php 文件”钩选并保存即可。
PS:目前本人应用这种方法。
方法二:原理来自台湾的网友
C.H.Weng
修正郵件本身的 header、subject 以及內容,使大多數的郵件軟體與網頁可以正確讀取。
這方法雖然不錯,但是因為考慮到還有一些系統沒有完全支援 UTF-8,容易產生一些預期之外的狀況。因此,除非你很執著一定要採用 UTF-8 編碼,不然不建議用這個方式修正。
由於不易掌握送到 wp_mail 這個函式的資料型式,因此這個方法可能還有一些盲點存在。不過至少 WordPress 本身用到關於寄信的功能、以及
WP-DB-Backup、
Spam Karma 2 等等外掛都能正常運作。
先下载其制作的
wp-mail2utf8.rar (1.64 KB)
文件,
修改文件名为my-hacks.php(注意后缀名),并上传至Wordpress
根目录。然后登陆您的后台,在“设置”-“其他”中,将“兼容旧版 WordPress 中的 my-hacks.php 文件”钩选并保存即可。
PS:这个方法是直接从WP中读取邮件地址,可随着你在WP中修改邮件地址,自动改变,本人未做测试,如果有异常情况,请联系原作者。
方法三:原理来自台湾的网友
C.H.Weng
目前常見的各大論壇,為求最大相容性,就算論壇本身是 UTF-8 編碼,在寄發郵件的時候,還是將郵件內容轉成 Big5 編碼來寄送。這方法較前一個的相容性好上許多,缺點就是沒辦法兼顧到 UTF-8 多語系並存的特色,而且伺服器本身必須有 iconv 功能,才能進行轉換。這邊我一樣直接對 wp_mail 函式下手,這樣處理過後,凡是藉由這個函式送出的郵件,就全部都是 Big5 編碼的形式了。
先下载其制作的
wp-mail2big5.rar (703 Bytes)
文件,
修改文件名为my-hacks.php(注意后缀名),并上传至Wordpress
根目录。然后登陆您的后台,在“设置”-“其他”中,将“兼容旧版 WordPress 中的 my-hacks.php 文件”钩选并保存即可。
PS:这个方法是直接从WP中读取邮件地址,可随着你在WP中修改邮件地址自动改变,本人未做测试,如果有异常情况,请联系原作者。
(注意:此方法修改为BIG5发送,理论上可以修改源代码实现简体形式,本人未做测试,欢迎有才人士修改后反馈)
方法四:使用插件,当然以上的方法都可以做成插件,感兴趣的朋友可以自己制作,记得反馈哦。
插件名称:UTF-8 Mail Header Fix (PipperL version)
最新版本:v1.3
适用版本:WordPress 2.X
官方站点:終極邊疆BLOG
本站下载:
utfmail_PL_13.zip (1.35 KB)
补充说明一:
著名的Spam Karma 2(SK2) 插件在发信时没有调用系统函数,而是自己写了邮件发送部分的代码,故由它发出的邮件可能仍有部分地方会是乱码(标题或内容)。
碎片已针对这个问题修改了它的源码(version 2.3rc1),省去各位劳心之苦。本站下载:
spam_karma_2_plugin.zip (13.42 KB)
补充说明二:
修改php.ini文件实现使用自己的邮件地址作为发送邮件地址
1. 首先从/public_html/下载 php.ini 文件
2. 在php.ini文件中找到第604行的
sendmail_path = /usr/sbin/sendmail -t -i ;
3.將他改為:
sendmail_path = /usr/sbin/sendmail -t -i -f you@gmail.com ;
其中
-f是个参数,后面的「
you@gmail.com」改成你的Email地址
把这个修改好的php.ini文件,复制到你的WP根目录。完成。
PS:任何问题请留言或者联系原作者,请各位测试过的朋友积极反馈。

PS2:总的来说解决方案其实就是两种,一种是启用WP的my-hacks.php支持。 还有一种方式我觉得更为稳妥,WP本身提供了filter功能,针对特定流程中的某些步骤加以用户自定义功能,而发信功能恰好在受支持之列。推荐大家采用的終極邊疆提供的插件结合上面修改php.ini以自己邮件地址作为发件地址的形式来实现无乱码。
[
本帖最后由 大漠孤狼 于 2007-10-12 11:58 AM 编辑 ]