zd小达
一只萌萌哒的初中生
[博客优化]WORDPRESS邮件回复,超超超超,超详细!!!

有时候啊,访问人家博客的时候,总是喜欢留一些评论,博主回复之后,又因为没有消息的提醒不能再次回复,没有交互性,但有一些博客啊,评论在审核通过或者有人回复后,会自动发送邮件给用户,网站在收到新评论后也会第一时间发送给站长,方便!!!小达我也就秉着偷懒的心理,搞了个这个,顺便写了个教程。

1. 替换wp_mail()函数

wp默认其实是有一个发送邮件的函数的,设置里也有,设置好后会在收到评论后提醒管理员,但是!因为不知名的实现原因(这里不深究),用这个函数发布的邮件会进入垃圾邮箱,所以我们得用某个插件替换掉它,这里我们使用 WP Mail SMTP 这个插件,在wp商店有。

就是这玩意

安装完成后,插件会显示英文,这时候在仪表盘中选择更新

就可以了,我这边已经好了。

注意
如果报错,就多试几次,服务器很渣。

弄完后,侧边栏会出现一个。

接下来我们就可以配置SMTP了。

2.准备邮件服务器

这里我们提供两种方法,第一种是个人(QQ)邮箱,第二种是自己的域名邮箱。

1.QQ邮箱

登录后,点击设置帐户,往下翻啊翻,找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

选择 IMAP/SMTP服务 (什么是 IMAP,它又是如何设置?) ,点击开启,验证密保好,收受到一个 授权码,划重点啊,一定保存,接下来就是下一步了。

2. 域名邮箱

这里又有几个选项,QQ的域名邮箱已经不行了(如果原先有,可以参考上文QQ邮箱的方法获得授权码),自己搭建也可以,但是阿里云禁用了邮件端口,这里也不行,所以我就决定使用阿里云的邮件服务

就吹吧你,不就是发邮件吗?

每日200封免费邮件 ,对我这种小博客是完全足够的。

duang

开通服务后,我们点击发信域名新建域名

这里可以使用子域名或者根域名都是可以的,点击确定

After that,点击配置

将验证的内容照着自己显示的项目解析(这总会吧),完成后,点击验证,就OK了。

之后,在侧边栏点击 发信地址新建发信地址

账号+@+域名=发信地址 ,就这个公式,回信地址填自己的Email,(欢迎轰炸)

点击验证回信地址,你的Email会收到阿里云的邮件,确认一下就OK了,接着再设置 SMTP密码 这个无所谓了,自己随便搞一个,最后记下信息就可以了。

3.填写信息

进入上面提到的设置页面

填写 发信地址

下面的信息照着我的填

用户名依旧填写 发信地址 密码填写之前设置的 STMP密码,最后保存设置,在  电子邮件测试 里测试一下。

HTML 格式测试电子邮件已成功发送。请检查电子邮件信箱以确认邮件是否寄达。

duang完美。

4.最后一步,配置邮件回复。

z这里我们需要在主题编辑器或者直接用FTP修改当前主题functions.php,文件,将如下代码加入进去(不要轻易升级主题,升级后请重新加入代码)

/**
* WordPress 评论通过审核后邮件通知评论人
* 2016/7/22.繁夜
* @package loper
*/
add_action('comment_unapproved_to_approved', 'loper_comment_approved');
function loper_comment_approved($comment) {
  if(is_email($comment->comment_author_email)) {
    $post_link = get_permalink($comment->comment_post_ID);
    // 邮件标题,可自行更改
    $title = '您在 [' . get_option("blogname") . '] 的评论已通过审核';

    // 邮件内容
    $body = '
            <div style="background-color:#fff; border:1px solid #666666; color:#111; -moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px;border-radius:8px; font-size:12px; width:702px; margin:0 auto; margin-top:10px;font-family:苹方,微软雅黑, Arial;">  
            <div style="background:#666666; width:100%; height:60px; color:white; -moz-border-radius:6px 6px 0 0; -webkit-border-radius:6px 6px 0 0; -khtml-border-radius:6px 6px 0 0; border-radius:6px 6px 0 0; ">
            <span style="height:60px; line-height:60px; margin-left:30px; font-size:12px;"> 您在 <a style="text-decoration:none; color:#00bbff;font-weight:600;"  href="' . get_option('home') . '">' . get_option('blogname') . '  </a> 的留言有新回复啦!</span></div>
            <div style="width:90%; margin:0 auto">
              <p><strong>' . trim(get_comment($comment)->comment_author) . '</strong>, 您好!</p>
              <p>您在 [' . get_option('blogname') . '] 的文章<strong>《' . get_the_title($comment->comment_post_ID) . '》</strong>上发表的评论已通过作者审核并显示,快来看看吧 ^_^:<br />
              <p>这是你的评论:</p>
              <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim(get_comment($comment)->comment_content) . '</p>
              <p>您也可移步到文章<a style="text-decoration:none; color:#00bbff" href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '"> 《'. get_the_title($comment->comment_post_ID) .'》 </a>查看你的评论</p>
              <p>欢迎再次光临 <a style="text-decoration:none; color:#00bbff" href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
              <p style="border-top:1px dashed #dbd1ce;"></p>
              <p>(此邮件由系统自动发出, 请勿回复。)</p>
              <p align="right">But如果您想更深入的和博主交流的话,欢迎回复哦^-^</p>
            </div></div>';
    $body = convert_smilies($body);//转换代码为表情
    @wp_mail($comment->comment_author_email, $title, $body, "Content-Type: text/html; charset=UTF-8");        
    }
}
/**
* WordPress 评论回复邮件通知
* 通过回复ID,得到该回复下的所有评论,若有,循环向被回复人发送评论通知邮件
* 2016/7/22.繁夜
* @package loper
*/
 function comment_mail_notify($comment_id) {
      //$admin_notify = '1'; // admin 要不要收回复通知 ( '1'=要 ; '0'=不要 )
     $comment = get_comment($comment_id);//根据id获取这条评论相关数据
     $content=$comment->comment_content;
     //对评论内容进行匹配
     $match_count=preg_match_all('/<a href="#comment-([0-9]+)?" rel="nofollow">/si',$content,$matchs);
     if($match_count>0){//如果匹配到了
         foreach($matchs[1] as $parent_id){//对每个子匹配都进行邮件发送操作
             SimPaled_send_email($parent_id,$comment);
         }
     }elseif($comment->comment_parent!='0'){//以防万一,有人故意删了@回复,还可以通过查找父级评论id来确定邮件发送对象
         $parent_id=$comment->comment_parent;
         SimPaled_send_email($parent_id,$comment);
     }else return;
 }
add_action('comment_post', 'comment_mail_notify');

function SimPaled_send_email($parent_id,$comment){//发送邮件的函数
    $admin_email = get_bloginfo ('admin_email');//管理员邮箱
    $parent_comment=get_comment($parent_id);//获取被回复人(或叫父级评论)相关信息
    $author_email=$comment->comment_author_email;//评论人邮箱
    $to = trim($parent_comment->comment_author_email);//被回复人邮箱
    $spam_confirmed = $comment->comment_approved;
    if ($spam_confirmed != 'spam' &amp;&amp; $to != $admin_email &amp;&amp; $to != $author_email) {
           $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
           $subject = '您在 [' . get_option("blogname") . '] 的留言有了新回复';
           $message = '
            <div style="background-color:#fff; border:1px solid #666666; color:#111; -moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px;border-radius:8px; font-size:12px; width:702px; margin:0 auto; margin-top:10px;font-family:苹方,微软雅黑, Arial;">  
            <div style="background:#666666; width:100%; height:60px; color:white; -moz-border-radius:6px 6px 0 0; -webkit-border-radius:6px 6px 0 0; -khtml-border-radius:6px 6px 0 0; border-radius:6px 6px 0 0; ">
            <span style="height:60px; line-height:60px; margin-left:30px; font-size:12px;"> 您在 <a style="text-decoration:none; color:#00bbff;font-weight:600;"  href="' . get_option('home') . '">' . get_option('blogname') . '  </a> 的留言有新回复啦!</span></div>
            <div style="width:90%; margin:0 auto">
              <p><strong>' . trim(get_comment($parent_id)->comment_author) . '</strong>, 您好!</p>
              <p>您在 [' . get_option('blogname') . '] 的文章<strong>《' . get_the_title($comment->comment_post_ID) . '》</strong>上发表的评论有新回复啦,快来看看吧 ^_^:<br />
              <p>这是你的评论:</p>
              <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim(get_comment($parent_id)->comment_content) . '</p>
              <p><strong>' . trim($comment->comment_author) . '</strong> 给你的回复是:<br />
              <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim($comment->comment_content) . '</p>
              <p>您也可移步到文章<a style="text-decoration:none; color:#00bbff" href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '"> 《'. get_the_title($comment->comment_post_ID) .'》 </a>查看完整回复内容</p>
              <p>欢迎再次光临 <a style="text-decoration:none; color:#00bbff" href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
              <p style="border-top:1px dashed #dbd1ce;"></p>
              <p>(此邮件由系统自动发出, 请勿回复。)</p>
              <p align="right">But如果您想更深入的和博主交流的话,欢迎回复哦^-^</p>
            </div></div>';
        $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
        $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
        $message = convert_smilies($message);//转换代码为表情
        wp_mail( $to, $subject, $message, $headers );
    }
}

如果本文的代码有错误,请移步到原文进行复制。

5.测试

最后的最后,找一个好基友帮你测试一下,回复就配置完了,OHOHOH!!!

赞赏
本文章由zd小达原创,未经允许,严禁转载😊,本文链接https://blog.zhangda.xyz/write/py/535/,仅发布于zd小达的博客,酷安以及tcitr论坛。
首页      博客优化      [博客优化]WORDPRESS邮件回复,超超超超,超详细!!!

zd小达

文章作者

发表评论

textsms
account_circle
email

zd小达's blog (๑>؂<๑)

[博客优化]WORDPRESS邮件回复,超超超超,超详细!!!
有时候啊,访问人家博客的时候,总是喜欢留一些评论,博主回复之后,又因为没有消息的提醒不能再次回复,没有交互性,但有一些博客啊,评论在审核通过或者有人回复后,会自动发送邮件给用…
扫描二维码继续阅读
2020-03-25