WordPress用email发文时出现乱码的解决方法
试了下wordpress 电子邮件发文功能确实很好用,但奇怪的是我用gmail发的邮件,帖子里中文老是乱码,而全英文的邮件却正常。折腾了一会终于搞定:
解决方法:
编辑wp-mail.php,找到代码(大概在第185行左右):
if ( false !== stripos($content_transfer_encoding, "quoted-printable") ) {
$content = quoted_printable_decode($content);
}
然后在这个语句的下面添加如下代码:
if ( false !== stripos($content_transfer_encoding, "base64") ) {
$content =base64_decode($content);
}
ok, 搞定。 原理就是:电子邮件的传输编码有两种,一种是quoted_printable, 另一种是base64 。貌似wp-mail默认只会转换 quoted_printable编码的邮件,而没有判断base64的语句。所以添加一条就好了。这样修改好后用无论用gmail的手机版客户端发文还是用gmail的web客户端都不会出现乱码了。
P.S.1: 关于怎么样设置用wordpress自动收邮件博文,参考一个比较不错的帖子:
http://www.thinkweird.info/573/how-to-publish-posts-to-wordpress-blog-via-email-4
P.S.2: 本文适用与wordpress2.9, 不保证与以后版本的兼容性。
P.S.3: 适用于纯文本格式!富文本格式显示不出来,看了下应该和boundary 变量有关,改天再修改下试试。
修正 又改了一下,用gmail和sina的纯文本格式发邮件都测试成功了。

用这个比较好,直接是插件。
http://oceanlinux.com/49
jhblog 回复:
1月 21st, 2010 at 9:13 下午
谢谢,这两种方法各有优点吧。这个方法就是配置起来麻烦一些,但可以识别其他编码的邮件,也不用装其他扩展包。另外你也可以考虑用下gmail的手机专用客户端,有塞班版的,很好用。
我照你的方法设置后可以收到各类邮箱的发文,但是只有标题没有内文,这点很奇怪。。。求解!
jhblog 回复:
3月 29th, 2010 at 12:00 下午
又改了下,这回用gmail和sina的纯文本格式测试都没有问题了。记住要选上“纯文本格式发送”!