前言
最近越发感受到给博客添加评论邮件提醒的重要性,就好像你有一座宅子,有人来参观,有人发表看法,有人给你写留言,如果你没有邮件提醒,这些来访就像一个个孤立的消息,只有等到你什么时候回家,才有可能被知道。
但当你添加邮件提醒之后,这消息就有可能在被动中被主动提前知道,无疑增加博客与博客之间的连接性,毕竟大部分的访客其实还是博友圈本身。
当然,也有人说,我想把博客和生活分开,现实中我有办法主动触发去了解关于自己博客相关消息的方式,例如待办等,但我估摸你有主动触发了解消息的方式,但没有自动去通知留言方的方式,所以还是强烈建议添加一个评论邮件提醒功能。
方法
这里主要介绍通用的方法,也正是本博客正在使用的方法,其实现在很多主题都内置了邮件提醒功能,但我个人感觉,早期的大部分博客主题是没有考虑评论邮件提醒的功能,或者也有,但是没有好好利用起来,下面介绍方法:
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,但记得提前备份网站,以及数据库,测试相关插件时,网站被折腾崩了一次,得亏每天数据都有备份,逃~