前言
最近越发感受到给博客添加评论邮件提醒的重要性,就好像你有一座宅子,有人来参观,有人发表看法,有人给你写留言,如果你没有邮件提醒,这些来访就像一个个孤立的消息,只有等到你什么时候回家,才有可能被知道。
但当你添加邮件提醒之后,这消息就有可能在被动中被主动提前知道,无疑增加博客与博客之间的连接性,毕竟大部分的访客其实还是博友圈本身。
当然,也有人说,我想把博客和生活分开,现实中我有办法主动触发去了解关于自己博客相关消息的方式,例如待办等,但我估摸你有主动触发了解消息的方式,但没有自动去通知留言方的方式,所以还是强烈建议添加一个评论邮件提醒功能。
方法
这里主要介绍通用的方法,也正是本博客正在使用的方法,其实现在很多主题都内置了邮件提醒功能,但我个人感觉,早期的大部分博客主题是没有考虑评论邮件提醒的功能,或者也有,但是没有好好利用起来,下面介绍方法:
1、在WordPress后台找到外观-主题文件编辑器。
2、在主题文件中选择模板函数(functions.php)。
注意:老版本WordPress可能无法直接从后台编辑模板函数文件,也可以从服务器本地编辑该文件,就是要记得注意当前主题的路径,别修改到其他主题的模板函数文件了。
3、任意位置插入如下代码(根据注释内容修改演示信息)
function mail_smtp( $phpmailer ) { $phpmailer->IsSMTP(); $phpmailer->SMTPAuth = true; //启用SMTPAuth服务 $phpmailer->Port = 465; //MTP邮件发送端口,这个和下面的对应,如果这里填写25,则下面为空白 $phpmailer->SMTPSecure ="ssl"; //是否验证 ssl,这个和上面的对应,如果不填写,则上面的端口须为25 $phpmailer->Host = "smtp.qq.com"; //邮箱的SMTP服务器地址,如果是163的则为:smtp.163.com $phpmailer->Username = "admin@qq.com"; //你的邮箱地址 $phpmailer->Password ="UsH9]iRG,S6OR1{sK("; //你的邮箱授权密码(有的是登录密码) } add_action('phpmailer_init', 'mail_smtp'); //下面这个很重要,需跟上面smtp邮箱一致才行 function ashuwp_wp_mail_from( $original_email_address ) { return 'admin@qq.com'; } add_filter( 'wp_mail_from', 'ashuwp_wp_mail_from' ); //修改WordPress发送邮件的发件人 function new_from_name($email){ $wp_from_name = get_option('blogname'); return $wp_from_name; } add_filter('wp_mail_from_name', 'new_from_name'); /* * 评论邮件回复 */ function comment_mail_notify($comment_id){ $mail_user_name = akina_option('mail_user_name') ? akina_option('mail_user_name') : 'poi'; $comment = get_comment($comment_id); $parent_id = $comment->comment_parent ? $comment->comment_parent : ''; $spam_confirmed = $comment->comment_approved; if(($parent_id != '') && ($spam_confirmed != 'spam')){ $wp_email = $mail_user_name . '@' . 'email.' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); $to = trim(get_comment($parent_id)->comment_author_email); $subject = '你在 [' . get_option("blogname") . '] 的留言有了回应'; $message = ' <table border="1" cellpadding="0" cellspacing="0" width="600" align="center" style="border-collapse: collapse; border-style: solid; border-width: 1;border-color:#ddd;"> <tbody> <tr> <td> <table align="center" border="0" cellpadding="0" cellspacing="0" width="600" height="48" > <tbody><tr> <td width="100" align="center" style="border-right:1px solid #ddd;"> '. get_option("blogname").'</td> <td width="300" style="padding-left:20px; color:#ec3409;"><strong>您有一条来自' . get_option("blogname") . ' 的回复,系统发送,请勿回复</strong></td> </tr> </tbody> </table> </td> </tr> <tr> <td style="padding:15px;"><p><strong>' . trim(get_comment($parent_id)->comment_author) . '</strong>, 你好!</span> <p>你在《' . get_the_title($comment->comment_post_ID) . '》的留言:</p><p style="border-left:3px solid #ddd;padding-left:1rem;color:#999;">' . trim(get_comment($parent_id)->comment_content) . '</p><p> ' . trim($comment->comment_author) . ' 给你的回复:</p><p style="border-left:3px solid #ddd;padding-left:1rem;color:#999;">' . trim($comment->comment_content) . '</p> <center ><a href="' . htmlspecialchars(get_comment_link($parent_id)) . '" target="_blank" style="background-color:#6ec3c8; border-radius:10px; display:inline-block; color:#fff; padding:15px 20px 15px 20px; text-decoration:none;margin-top:20px; margin-bottom:20px;">点击查看完整内容</a></center> </td> </tr> <tr> <td align="center" valign="center" height="38" style="font-size:0.8rem; color:#999;">Copyright © '.get_option("blogname").'</td> </tr> </tbody> </table>'; $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');
PS:代码是几年前从一个大佬的博客copy的,但大佬的博客早已关闭,这里就不表明出处了,总之非我原创哈。
4、在自己博客任意页面下评论,查看邮箱是否有提醒,若有提醒证明已成功开启评论邮件提醒,反之出现了异常。
异常情况排查思路
大概率是邮箱授权密码出现了问题,如果使用QQ邮箱的服务,可以可以查看QQ邮箱帮助系统 查找相关问题的解决方案,QQ邮箱记得绑定手机号码,个人之前出现异常是通过绑定手机号码解决的。
演示
后话
如果不想通过修改代码来实现该功能,可以尝试使用相关的插件服务,例如:WP Mail Smtp - SMTP7,但记得提前备份网站,以及数据库,测试相关插件时,网站被折腾崩了一次,得亏每天数据都有备份,逃~
Comments | 35 条评论
王光卫博客 博主
这个功能用处很大的
龙鲲 博主
@王光卫博客
可以试试
永恒末匕 博主
如果可以用阿里的就好了
龙鲲 博主
@永恒末匕
可以用阿里邮箱,我现在用的就是阿里邮箱
TeacherDu 博主
元旦快乐~
龙鲲 博主
@TeacherDu
迟到的新年快乐
TeacherDu 博主
考虑一下,弄个异步通知,这样可以减少评论提交延迟~
龙鲲 博主
@TeacherDu
感觉现在几乎无感,没有太大区别,有时间可以折腾
TeacherDu 博主
@龙鲲
是感觉挺快的!
Crant 博主
很酷的博客
龙鲲 博主
@Crant
主题眼熟,之前看到过
星图 博主
之前也是代码搞定,后来倒腾主题多,改用插件实现此功能。
龙鲲 博主
@星图
实现功能最关键
云晓晨 博主
归来仍是静态博客
龙鲲 博主
@云晓晨
笑死
茫跟 博主
@云晓晨
还是插件方便
Jeffer.Z 博主
我好好像是插件,不愿意折腾代码,太烦了
龙鲲 博主
@Jeffer.Z
哈哈哈哈,我现在尽量不折腾主题
亮娃子 博主
我也是昨晚刚把这功能加上,很简单啊,用的插件
龙鲲 博主
@亮娃子
实现功能最重要,哈哈哈哈哈
老狼 博主
有些服务器连SMTP服务器会有问题,尤其海外。另外发送出去的邮件也有失败的概率,直接QQ邮箱可能好一点
龙鲲 博主
@老狼
我的域名邮箱就是放在QQ邮箱里?
大致 博主
“主题文件编辑器”不安全,关掉比较好。玩WP的没几个不会自己改文件的。
龙鲲 博主
@大致
这个貌似自带的,不知道在哪关
大致 博主
@龙鲲
在wp-config。php里增加一行:
define('DISALLOW_FILE_EDIT', true);
(请替换标点)
P.S:如果收不到我的网站邮件自动回复,可以到垃圾箱里看一看。国产企业邮箱对gmail的判定标准很迷。
倦意 博主
一般好一点的主题都自带回复邮件功能,WP Mail Smtp 现在出了会员制,不再推荐了哈
龙鲲 博主
@倦意
印象里,免费也能用,现在全面收费了吗?
obaby 博主
@龙鲲
破解版路过~~
龙鲲 博主
@obaby
只要我不升级,就不用收费?
流量卡知识网 博主
你好,看完你的博客文章,感觉很不错!
龙鲲 博主
@流量卡知识网
感谢认可!
淡念 博主
好巧,我昨天也研究半天这个,差点儿就放弃了
龙鲲 博主
@淡念
赶紧试试
没有楼的楼长 博主
提醒我了,定时备份还没开,现在去开备份去
龙鲲 博主
@没有楼的楼长
笑死。记得异地定时备份,别备份在本地,然后本地一挂,备份无效