当前位置: 首页 > 其它 > WordPress评论回复邮件通知对方功能

WordPress评论回复邮件通知对方功能

发布于:2014-11-19 最后更新:2020-3-29 其它 24条评论 24,239 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

原本小z博客使用了多说评论,回复对方后会收到多说的提示,不过近期Gravatar头像被墙,多说服务器也太不稳定,部分头像回源而不能缓存,导致博客加载异常缓慢,还没有解决的请看这里

因此最近又换回了wordpress自带评论,回归简单化,速度感觉提升了不少,不过为了利于用户体验,当别人在我们博客留言我们回复对方的时候希望对方能够收到一条通知,那么就可以使用评论回复邮件通知的功能。

网上提供了很多种代码的方法,我也试过好几种,有的代码已经失效不再起作用,而有的代码则不太完整,最后由热心网友无主题提供了一段不错的功能代码,只需要将代码添加到主题目录的functions.php中即可。

// 评论回应邮件通知
function comment_mail_notify($comment_id) {
  $admin_email = get_bloginfo ('admin_email'); 
  $comment = get_comment($comment_id);
  $comment_author_email = trim($comment->comment_author_email);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  $to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : '';
  $spam_confirmed = $comment->comment_approved;
  if (($parent_id != '') && ($spam_confirmed != 'spam') && ($to != $admin_email)) {
    $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了新回复';
    $message = '
        <div style="-moz-border-radius: 5px;-webkit-border-radius: 5px;-khtml-border-radius: 5px;border-radius: 5px;background-color:white;border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;width:500px;margin:50px auto;color:#555555;font-family:Century Gothic,Trebuchet MS,Hiragino Sans GB,微软雅黑,Microsoft Yahei,Tahoma,Helvetica,Arial,SimSun,sans-serif;font-size:12px;">
        <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt;</span>您在 <a style="text-decoration:none;color: #12ADDB;" href="' . get_option('home') . '" rel="external nofollow" target = "_blank"  rel="external nofollow" target = "_blank"  rel="external nofollow" target = "_blank"  target="_blank" rel="noopener noreferrer">' . get_option('blogname') . '</a> 博客上的留言有回复啦!</h2><div style="padding:0 12px 0 12px;margin-top:18px"><p>亲爱的 ' . trim(get_comment($parent_id)->comment_author) . ', 您好!您曾在文章《' . get_the_title($comment->comment_post_ID) . '》上发表评论:</p>
        <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">'. trim(get_comment($parent_id)->comment_content) . '</p><p>'. trim($comment->comment_author) .'给您的回复如下:</p><p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">' . trim($comment->comment_content) .'</p><p>您可以点击<a href="' . htmlspecialchars(get_comment_link($parent_id, array('type' => 'comment'))) . '" rel="external nofollow" target = "_blank" >查看回复的完整内容</a>,欢迎再次光临<a href="' . get_option('home') . '" rel="external nofollow" target = "_blank"  rel="external nofollow" target = "_blank"  rel="external nofollow" target = "_blank" >' . get_option('blogname') . '</a> 。</p>
        <p style="color: #000;background: #f5f5f5;font-size:11px;border: solid 1px #eee;padding: 2px 10px;">请注意:此邮件由 <a href="' . get_option('home') . '" rel="external nofollow" target = "_blank"  rel="external nofollow" target = "_blank"  rel="external nofollow" target = "_blank" >' . get_option('blogname') . '</a> 自动发送,请勿直接回复。<br />如果此邮件不是您请求的,请忽略并删除!</p></div></div>';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
  }
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------

显示的效果请看下面的截图,如果你的主机禁用了mail()函数,建议使用WP SMTP插件或使用SMTP代码来解决。

huifu

邮件回复通知

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


已有24条评论


  1. 不知道为什么我用这段代码就可以..
    这段代码没有美化 很丑,我是WIN系统 插件发的

    //评论邮件回复
    /* comment_mail_notify v1.0 by willin kan.*/
    function comment_mail_notify($comment_id) {
    $admin_email = get_bloginfo (‘admin_email’); // $admin_email 可改为你指定的 e-mail.
    $comment = get_comment($comment_id);
    $comment_author_email = trim($comment->comment_author_email);
    $parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
    $to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : ”;
    $spam_confirmed = $comment->comment_approved;
    if (($parent_id != ”) && ($spam_confirmed != ‘spam’) && ($to != $admin_email) && ($comment_author_email == $admin_email)) {

    /* 上面的判断式,决定发送邮件的必要条件:
    ($parent_id != “) && ($spam_confirmed != ‘spam’): 回复的, 而且不是 spam 才可发, 必需!!
    ($to != $admin_email) : 不发給 admin.
    ($comment_author_email == $admin_email) : 只有 admin 的回复发邮件.
    可视个人需求修改以上条件.
    */
    //e-mail 发出点, no-reply 可改为可用的 e-mail.
    $wp_email = ‘no-reply@’ . preg_replace(‘#^www\.#’, ”, strtolower($_SERVER[‘SERVER_NAME’]));
    //邮件内容
    $subject = ‘您在 [‘ . get_option(“blogname”) . ‘] 的留言有了回应’;
    $message = trim(get_comment($parent_id)->comment_author) . ‘, 您好!
    您曾在《’ . get_the_title($comment->comment_post_ID) . ‘》的留言:’
    . trim(get_comment($parent_id)->comment_content) . ‘ ‘ . trim($comment->comment_author) . ‘ 给您的回应:’ . trim($comment->comment_content) . ‘ 您可以点击 ‘ . htmlspecialchars(get_comment_link($parent_id)) . ‘查看回应完整內容 欢迎再度光临’ . get_option(‘home’) . ” . get_option(‘blogname’) . ‘ (此邮件由系统自动发出, 请勿回复.) ‘;
    $from = “From: \”” . get_option(‘blogname’) . “\” “;
    $mail_headers = “$from\nContent-Type: text/html; charset=” . get_option(‘blog_charset’) . “\n”;
    wp_mail( $to, $subject, $message, $headers );
    }
    }
    //发表评论时的动作钩子
    add_action(‘comment_post’, ‘comment_mail_notify’);

      1. 没有,我换服务器之前是有的。这次换完服务器本来想解决一下这个问题。结果这两天的测试,发现没有这个问题了。 如果出现由xxx代发,对邮箱比较不友好,容易被当成垃圾处理。

      2. 以前的服务器已经被qq邮箱系统列入黑名单了。可能是由于垃圾评论的邮件提醒造成的。导致我长时间也不能收到提醒,无奈才换到了163邮箱

        1. 的确如此,如果一个邮箱一天内发送的邮件过多也会被限制。貌似默认使用mail()函数会出现由XX代发,SMTP的方式应该不会吧。

          1. 理论上是这样的. .
            不过我现在也在使用mail()函数发送邮件,但没有出现代发的情况, 不知为何

          2. 使用mail()函数发送邮件进入垃圾箱的机率会比较高,还是改为用SMTP发送吧。http://www.xiaoz.me/archives/5064