有时候啊,访问人家博客的时候,总是喜欢留一些评论,博主回复之后,又因为没有消息的提醒不能再次回复,没有交互性,但有一些博客啊,评论在审核通过或者有人回复后,会自动发送邮件给用户,网站在收到新评论后也会第一时间发送给站长,方便!!!小达我也就秉着偷懒的心理,搞了个这个,顺便写了个教程。
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封免费邮件 ,对我这种小博客是完全足够的。
开通服务后,我们点击发信域名,新建域名
这里可以使用子域名或者根域名都是可以的,点击确定。
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' && $to != $admin_email && $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!!!
发表回复