评论通过审核后才发送邮件+邮件样式[wordpress]

(゜-゜)つロ 干杯~

给WordPress添加评论回复邮件提醒功能,目前已成为WordPress博客的标配,不仅可以大大提高用户体验,还可以增加访客的回头率。

偶然发现,这是一项很危险的功能,目前网上流行的代码版本很容易被一些别有用心的人利用:

我可以给你博客的所有评论都回复一遍,不仅在你的博客留下了垃圾评论,垃圾内容也通过评论回复提醒邮件顺带发出去了。

无需花费心思去获取评论者的邮件地址,也不用担心评论是否还在等待审核,垃圾广告内容顺利发出。

很多博客都宣扬不会泄漏评论者的email,但是如果这个bug被人利用,你的博客倒成了垃圾邮件的发送者,这岂不是很搞笑?

解决办法

1、进入WordPress后台 - 设置 - 讨论,勾选"评论必须经人工批准",这样所有评论必须经过管理员审核才能显示,虽然有点麻烦,但是我觉得这是博主应该负起的一项责任。

2、接着我们需要将之前的评论回复邮件提醒的代码做些修改。

对于管理员和编辑的评论回复,可以直接给评论者发送提醒邮件;对于普通访客发表的评论,先让它在待审评论中呆着,等博主审核后,再给评论者发送提醒邮件。下面是一个评论回复邮件提醒的代码范例,使用的是所有评论回复都发送邮件通知的版本,如果你需要其他功能,请参考网上的代码进行修改:

效果图

评论通过审核后才发送邮件+邮件样式[wordpress]

使用方法

将下面代码添加到functions.php文件里,如果你functions.php文件里已经有了类似的代码需要删除替换掉,另外一些主题不在functions.php文件里需要自己删除其他文件里的邮件回复代码,然后在将贝贝的邮件发送代码添加到functions.php里去。

  1. /**
  2.  * WordPress评论回复邮件提醒防垃圾评论版
  3.  * 作者:韦贝贝
  4.  * 博客:http://www.hibbba.com
  5.  *2017年1月31日
  6.  */
  7. //评论邮件回复开始
  8. function logcg_comment_mail_notify($comment_id, $comment_status) {
  9.   // 评论必须经过审核才会发送通知邮件
  10.   if ($comment_status !== 'approve' && $comment_status !== 1)
  11.     return;
  12.   $comment = get_comment($comment_id);
  13.   if ($comment->comment_parent != '0') {
  14.     $parent_comment = get_comment($comment->comment_parent);
  15.     // 邮件接收者email      
  16.     $to = trim($parent_comment->comment_author_email);
  17.     // 邮件标题
  18.     $subject = '您在[' . get_option("blogname") . ']的留言有了新的回复';
  19.     // 邮件内容,自行修改,支持HTML
  20.     $message = '
  21.                 <div style="background: #F1F1F1;width: 100%;padding: 50px 0;">
  22.                 <div style="background: #FFF;width: 750px;margin: 0 auto;">
  23.                 <div style="padding: 10px 60px;background: #FF5E52;color: #FFF;font-size: 24px; font-weight: bold;"><a href="' . get_option('home') . '" style="text-decoration: none;color: #FFF;" target="_blank">' . get_option('blogname') . '</a></div>
  24.                 <h1 style="text-align: center;font-size: 26px;line-height: 50px;margin: 30px 60px;font-weight: bold;font-family: 宋体,微软雅黑,serif;">
  25.                     您在 [' . get_option('blogname') . '] 的留言有了新回复
  26.                 </h1>
  27.                 <div style="border-bottom: 1px solid #333;height: 0px;margin: 0 60px;"></div>
  28.                 <div style="margin: 30px 60px;color: #363636;">
  29.                         <p style="font-size: 16px;font-weight: bold;line-height: 30px;">' . $parent_comment->comment_author . ',您好!</p>
  30.                         <div style="font-size: 16px;">
  31.                             <p><strong>您曾在 [' . get_option("blogname") . '] 的文章  《' . get_the_title($comment->comment_post_ID) . '》 上发表评论:</strong></p>
  32.                             <blockquote style="border-left: 4px solid #ddd; padding: 5px 10px; line-height: 22px;">' . nl2br($parent_comment->comment_content) . '</blockquote>
  33.                         </div>
  34.                         <div style="font-size: 16px;">
  35.                             <p><strong>' . trim($comment->comment_author) . ' 给您的回复如下:</strong></p>
  36.                             <blockquote style="border-left: 4px solid #ddd; padding: 5px 10px; line-height: 22px;">' . nl2br($comment->comment_content) . '</blockquote>
  37.                         </div>
  38.                         <p style="font-size: 16px;line-height: 30px;">
  39.                             你可以点击此链接 <a href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '" style="text-decoration: none;color: #50A5E6;" target="_blank">查看完整回复内容</a> | 欢迎再次来访 <a href="' . get_option('home') . '" style="text-decoration: none;color: #50A5E6;" target="_blank">' . get_option('blogname') . '</a>
  40.                         </p>
  41.                         <p style="color: #999;">(此邮件由系统自动发出,请勿回复!)</p>
  42.                     </div>
  43.                     <div style="border-bottom: 1px solid #dfdfdf;height: 0px;margin: 0 60px;"></div>
  44.                     <div style="text-align: right;padding: 30px 60px;color: #999;">
  45.                         <p>Powered by ' . get_option('blogname') . '</p>
  46.                     </div>
  47.                 </div>
  48.             </div>
  49.       ';
  50.     $message_headers = "Content-Type: text/html; charset=\"".get_option('blog_charset')."\"\n";
  51.     // 不用给不填email的评论者和管理员发提醒邮件
  52.     if($to != '' && $to != get_bloginfo('admin_email'))
  53.       @wp_mail($to, $subject, $message, $message_headers);
  54.   }
  55. }
  56. // 编辑和管理员的回复直接发送提醒邮件,因为编辑和管理员的评论不需要审核
  57. add_action('comment_post', 'logcg_comment_mail_notify', 202);
  58. // 普通访客发表的评论,等博主审核后再发送提醒邮件
  59. add_action('wp_set_comment_status', 'logcg_comment_mail_notify', 202);
  60. //评论邮件回复结束
   

如果资源下载失效请到 留言板 留言或者 QQ 联系我。

本站默认解压密码:www.hibbba.com

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: