Idea Press 猪头六独立博客:独立之人格,自由之思想。

修正WP mail to commenter插件发件人Email地址及名称

15:38:26 April 14, 2010 by:

用wordpress邮件评论回复通知插件mail to commenter的或许都知道,这个插件无法显示发件人地址信息,但本文主要不是要解决问题,而是将解决问题的思路写出来,当然,最后问题成功解决。如果你先麻烦,直接看解决方案即可,定位到这里

本人的博客刚上线没多久,很多功能还有待折腾和完善。一直苦于给评论者做出回复后如何通知对方,总不能挨个手动给人发邮件吧?那岂不累死?于是想到实现wordpress评论回复邮件通知功能。最开始的思路是NO插件。但是上网搜集了很多资料,未果:没有具体详实做法供参考。凭我这水平,不懂PHP,搞不定。

于是乎,改变思路,迫不得已,安装插件。我一般不喜欢安装插件,像右侧的侧边栏显示最新评论、wordpress文章标题优化,都是非插件实现的。

接下来就是寻找合适的轻量级的插件了,评论最多和使用最多的是偶爱偶家的Wordpress Thread Comment,其实这个插件我刚建本站的时候安装过,因为和我模板自带的嵌套回复功能重复,出现了两个reply,当时没匆忙细想直接卸载了。就在昨天看到了解决方案:关掉wordpress自带的评论嵌套功能。但是我没有去尝试,因为感觉这个插件太臃肿,功能很完善但我并不需要。

接下来又搜到了我爱水煮鱼的Comment Reply Notification,几番尝试,未果,不知是我太笨还是这插件根本不合格。
最后,找到了一个据说口碑也不错的:mail to commenter,也就是我现在在用的这个。安装上,后台启用,发送测试邮件,接收正常,很是欣慰。

但是有个细节问题,想必很多人都注意到了:不显示发件人及其Email邮件地址。
wordpress

去看了博主的插件主页,貌似有人问这个问题,但博主未予回复。

于是今天决定着手自己搞定,思路是这样子的:

1、邮件可以正常发送,“@+评论者+空格+回复内容”功能可以正常使用,评论人可以收到邮件,证明基本功能没有问题;

2、不显示发件人地址,证明邮件发件人信息配置不准确或是没有配置。

打开插件,看了两眼,看个半懂,于是先上网搜PHP Mail函数的用法。习惯性的google一下“PHP mail函数”,信息不全,改英文“PHP Mail fuction”,详细用法就在这里。多余的不说了,很明显,PHP Mail函数的基本样式是

mail(to,subject,message,headers,parameters)

其中发送邮件中额外报头的写法是:

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";
mail($to,$subject,$txt,$headers);
?>

到这里,解决方案就很明显了。

$headers = "From: webmaster@example.com" . "\r\n" .是发件人名称及Email地址。

于是再次打开mail to commenter插件,查找类似代码,在mailtocommenter_functions.php文件中有这么一段:

function mailtocommenter_send_email($to,$subject,$message){
	$blogname = get_option('blogname');  
	$charset = get_option('blog_charset');
	$headers  = "From: $blogname \n" ; 
	$headers .= "MIME-Version: 1.0\n";
	$headers .= "Content-Type: text/html;charset=\"$charset\"\n";
	$to = strtolower($to);
	return @wp_mail($to, $subject, $message, $headers);
}

到这里就明白了,作者没有设置发件人Email。但奇怪的是设置了发件人名称为博客名称(blogname)为啥也没显示呢。

下面修改就简单了:直接将$headers = "From: $blogname \n" ; 替换即可,我将它替换为了

$headers = 'From: 豬頭六 <no-reply@ideapress.org>' . "\r\n\\";

最后,测试了一下,一切OK,搞定。
wordpress

写了很多,其实本篇文章主要不是要解决问题,而是将解决问题的思路写出来,大家一起交流。有时候思路和判断比解决问题本身更重要。


看大家怎么说 · · · · · ·

已有19位看官发表了高见
  1. 集思 says:

    WordPress Thread Comment造成两个“回复”的问题的确很烦恼,当初我博客刚开始的时候,我折腾了半天,后来迫不得已,把自带的嵌套去掉才OK

  2. 集思 says:

    用谷歌搜索猪头六,居然第一页有我的博客出现

  3. iHenry says:

    这种邮件会不会被认作是垃圾邮件啊?

  4. Firm says:

    我就是用偶爱偶家的那个,感觉蛮不错

  5. 蜗牛 says:

    写的很好,用上了

  6. dboy says:

    我使用Comment Reply Notification也不能发邮件,用你的方法试试,谢谢喽~

  7. Candy says:

    测试下你的mail to commenter插件

  8. 郑州SEO says:

    貌似看了半天 还是没有太大的思路。。

Trackbacks

Check out what others are saying about this post...
  1. [...] 无意中看见这样一篇文章《修正WP mail to commenter插件发件人Email地址及名称》,虽然他是介绍WP mail to commenter这款插件,但是我还是往下面看了。结果让我惊喜的是,他很详细的介绍了解决这个问题的想法,我打开Comment Reply Notification插件文件夹里面的comment-reply-notification.php文件来傻看,没想到让我看出头绪来了^_^ [...]



我想说两句 · · · · · ·

告诉我你的想法... , 如果你想在评论中显示自定义头像, 请点击 gravatar!

注意:广告、垃圾评论、灌水请绕行。

评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, Jack是本文的评论者之一,则使用'@Jack '(不包括单引号)将会自动将您的评论发送给Jack。(注意:大小写需一致)