首页 > WordPress, 网络 > WordPress用email发文时出现乱码的解决方法

WordPress用email发文时出现乱码的解决方法

379 次阅读 2010年1月21日 发表评论 阅读评论

试了下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的纯文本格式发邮件都测试成功了。

Related Posts with Thumbnails
分类: WordPress, 网络 标签: , ,
  1. 2010年1月21日17:45 | #1

    用这个比较好,直接是插件。

    http://oceanlinux.com/49

    jhblog 回复:

    谢谢,这两种方法各有优点吧。这个方法就是配置起来麻烦一些,但可以识别其他编码的邮件,也不用装其他扩展包。另外你也可以考虑用下gmail的手机专用客户端,有塞班版的,很好用。

  2. NS
    2010年3月27日13:21 | #2

    我照你的方法设置后可以收到各类邮箱的发文,但是只有标题没有内文,这点很奇怪。。。求解! :::?: :::?: :::?:

    jhblog 回复:

    又改了下,这回用gmail和sina的纯文本格式测试都没有问题了。记住要选上“纯文本格式发送”!

  1. 2010年4月16日00:06 | #1
:::wink: :::twisted: :::roll: :::oops: :::mrgreen: :::lol: :::idea: :::evil: :::cry: :::arrow: :::?: :::-| :::-x :::-o :::-P :::-D :::-? :::) :::( :::!: ::8-O ::8)