存档

文章标签 ‘bo-blog’

解决phpmail发邮件时中文标题乱码的问题

2009年10月10日 2 条评论 426 views

今天心血来潮给博客装上留言、评论回复自动邮件通知评论者的插件,几经周折,用gmail以及gmail托管的@timmyvicky.com邮箱都失败了,后来用了一个163的,速度还算不错,不过测试时出问题了,中文标题乱码了。

去bo-blog论坛上插件帖子上翻,发现很多人都有这样的问题,不过作者(江湖人称 疯淫 的牛人)貌似没有给出解决办法。

怎么办呢?这样的用户体验肯定不好。于是开始分析问题所在。

首先可以肯定一点,乱码,那么问题自然出在编码上。

第一感觉想到的是会不会插件的php文件编码有问题。于是逐个打开插件里面的文件查看,全都是utf-8无bom,正常。pass~

然后开始想,标题乱码,但是邮件内容却是正常的,那会不会问题出在邮件的编码定义上?
于是打开乱码的邮件以及其他wp博客上自动回复给我的正常的邮件的原始头部信息进行比较,后来发现了问题所在。

原来"Content-Type:text/html;"这一行少了"charset=UTF-8"进行字符集定义。
找到问题根源了,于是顺藤摸瓜找到function.php(如果没改动过的话应该是在第73行)中的那行代码,将
[codes=php]  $header .= "Content-Type:text/html \r\n";[/codes]
替换为
[codes=php]  $header .= "Content-Type:text/html; charset=UTF-8 \r\n";[/codes]

然后保存并上传覆盖原文件,这样乱码标题问题就解决了。

这里提供修改好的function.php文件:
function.rar

以及修改过的replyback插件(仅仅修改了function.php文件):
replyback.rar

分类: Web 标签: , , ,