归一化评论回复通知插件的邮件格式

我这里使用到了Comment Reply NotificationMain To Commenter两个评论回复通知插件,初始的通知邮件格式是不一样的,直接修改成一样的格式可能还需要局部的修改代码。

1. Comment Reply Notification插件

Comment Reply Notification插件可以在发表评论时选择在评论有回复时是否接收通知邮件。

为了让Comment Reply Notification的邮件主题能显示如“您在 [xxx] 上的评论刚刚被 yyy 回复了”,其源码并不支持添加回复者yyy,我们可以在wp-content/plugins/comment-reply-notification下comment-reply-notification.php的第196行后加一行新的:
197 $mail_subject = str_replace('[cc_author]', $cc->comment_author, $mail_subject);

这样我们就可以使用“您在 [[blogname]] 上的评论刚刚被 [cc_author] 回复了”做为主题了。

2. Mail To Commenter插件

Mail To Commenter插件可以在发表评论时以“@user ”开头现实现对某个用户的回复,被回复者会收到一封邮件。WP-T-WAP插件在手机上回复评论时没有回复选项,使用此插件可以实现回复的功能。

Mail To Commenter邮件的发送者在接收时有时会显示“unknown user”之类的,为了与Comment Reply Notification一致,需要修改wp-content/plugins/mailtocommenter下mailtocommenter_functions.php的第216行:
216 $headers  = "From: $blogname \n" ;
为两行(参见comment-reply-notification.php第219行):
216 $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
217 $headers  = "From: \"$blogname\" <$wp_email>\n" ;

另外测试发现第218行(修改后)易导致收不到邮件(Comment Reply Notification没有此行),分析了收到的邮件结构发现该行是重复的,屏蔽或删除该行即可:
218 //$headers .= "MIME-Version: 1.0\n";

此外在测试时还发现有的用户收不到邮件的情况,分析下来发现wp-content/plugins/mailtocommenter下mailtocommenter.php文件第54行:
if ((array_key_exists($name,$mails))and ($mails["$name"]!=$admin_email) and ($mails["$name"]!=$owner_email)){
标红部分过滤了博客的管理邮箱(后台:设置->常规,电子邮件),可能是防止垃圾邮件攻击吧,因此我们在设置博客的管理邮箱时尽量不要与除了admin之外的其他用户重复,否则会收不到邮件。当然也可以把上面标红部分和其后“ and”删除以去掉这个过滤。

Tags:

2 Responses to “归一化评论回复通知插件的邮件格式”

  1. Aliaosha说道:

    你为什么用两个插件啊,用一个不就够了吗

    • lordong说道:

      两个是互补,使用CRN时在手机上用wap访问没有回复功能,MTC就弥补了这个缺陷,不过MTC总是发通知邮件,不象CRN那可选择接收。

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。