A、插件流,可以说WP强大的插件功能的确能省事不少。
插件的办法一般是两步:第一实现成功发邮件,第二时间评论自动回复,这就需要用到两个插件,一个是Configure SMTP,一个是Mail To Commenter。至于两个插件的用法,可以去度娘,多得很。这里说一下在SMTP设置的时候第一个Gmail的选项不要勾选,要不下面的SMTP HOST无法修改。下面是以QQ邮箱为例:(QQ邮箱应该是目前用的最多的。)
SMTP host : smtp.qq.com SMTP port : 465 Secure connection prefix : ssl Use SMTPAuth? : 选中 SMTP username : ******@qq.com //你的QQ邮箱 SMTP password : ****** //邮箱密码 点 Save Changes 保存,然后点击下面 Send test e-mail 按钮发送一个测试信,如果邮箱收到邮件那么就成功了。
这个办法是目前最多的办法,简单嘛。但是不一定能成功,即便你SMTP成功之后,依旧不一定会成功。至于具体啥原因,可能是主题,可能是版本,可能是意想不到的原因。所以我不推荐使用本办法。下面主机吧分享使用代码来实现。
B、代码实现,老是说,用代码的办法,百度找出来的方法也有很多种,下面是几种可用的代码。
评论邮件通知的方法:
1.所有回复都发送邮件通知
登陆博客后台,点击“外观”选项卡下的“编辑”选项进入主题编辑界面,在functions.php文件中的<?php和?>之间添加以下函数即可:
/* comment_mail_notify v1.0 by willin kan. (所有回复都发邮件) */ function comment_mail_notify($comment_id) { $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 = \'no-reply@\' . preg_replace(\'#^www\.#\', \'\', strtolower($_SERVER[\'SERVER_NAME\'])); //e-mail 发出点, no-reply 可改为可用的 e-mail. $to = trim(get_comment($parent_id)->comment_author_email); $subject = \'您在 [\' . get_option("blogname") . \'] 的留言有了回复\'; $message = \' <div style=" border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;"> <p>\' . trim(get_comment($parent_id)->comment_author) . \', 您好!</p> <p>您曾在《\' . get_the_title($comment->comment_post_ID) . \'》的留言:<br />\' . trim(get_comment($parent_id)->comment_content) . \'</p> <p>\' . trim($comment->comment_author) . \' 给您的回复:<br />\' . trim($comment->comment_content) . \'<br /></p> <p>您可以点击 查看回复完整內容</p> <p>欢迎再度光临 \' . get_option(\'blogname\') . \'</p> <p>(此邮件由系统自动发送,请勿回复.)</p> </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 ); //echo \'mail to \', $to, \'<br/> \' , $subject, $message; // for testing } } add_action(\'comment_post\', \'comment_mail_notify\'); // -- END ----------------------------------------
2.让访客自己选择是否邮件通知
在functions.php文件中的<?php和?>之间添加以下函数,该函数将会在评论框底部生成要不要收回复通知的选项(与主题有关)
/* 开始*/ function comment_mail_notify($comment_id) { $admin_notify = \'1\'; // admin 要不要收回复通知 ( \'1\'=要 ; \'0\'=不要 ) $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 : \'\'; global $wpdb; if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == \'\') $wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;"); if (($comment_author_email != $admin_email && isset($_POST[\'comment_mail_notify\'])) || ($comment_author_email == $admin_email && $admin_notify == \'1\')) $wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify=\'1\' WHERE comment_ID=\'$comment_id\'"); $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : \'0\'; $spam_confirmed = $comment->comment_approved; if ($parent_id != \'\' && $spam_confirmed != \'spam\' && $notify == \'1\') { $wp_email = \'no-reply@\' . preg_replace(\'#^www\.#\', \'\', strtolower($_SERVER[\'SERVER_NAME\'])); // e-mail 发出点, no-reply 可改为可用的 e-mail. $to = trim(get_comment($parent_id)->comment_author_email); $subject = \'您在 [\' . get_option("blogname") . \'] 的留言有了回复\'; $message = \' <div style=" border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;"> <p>\' . trim(get_comment($parent_id)->comment_author) . \', 您好!</p> <p>您曾在《\' . get_the_title($comment->comment_post_ID) . \'》的留言:<br />\' . trim(get_comment($parent_id)->comment_content) . \'</p> <p>\' . trim($comment->comment_author) . \' 给您的回复:<br />\' . trim($comment->comment_content) . \'<br /></p> <p>您可以点击查看回复的完整內容</p> <p>还要再度光临 \' . get_option(\'blogname\') . \'</p> <p>(此邮件由系统自动发送,请勿回复.)</p> </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 ); //echo \'mail to \', $to, \'<br/> \' , $subject, $message; // for testing } } add_action(\'comment_post\', \'comment_mail_notify\'); /* 自动加勾选栏 */ function add_checkbox() { echo \'<input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><label for="comment_mail_notify">有人回复时邮件通知我</label>\'; } add_action(\'comment_form\', \'add_checkbox\');
3.让博客管理员决定什么情况下发邮件
在functions.php文件中的<?php和?>之间添加以下函数:
/* 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 的回复才可发. 可视个人需修改上面的条件. */ $wp_email = \'no-reply@\' . preg_replace(\'#^www\.#\', \'\', strtolower($_SERVER[\'SERVER_NAME\'])); // e-mail 发出点, no-reply 可改为可用的 e-mail. $subject = \'您在 [\' . get_option("blogname") . \'] 的留言有了回复\'; $message = \' <div style=" border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;"> <p>\' . trim(get_comment($parent_id)->comment_author) . \', 您好!</p> <p>您曾在《\' . get_the_title($comment->comment_post_ID) . \'》的留言:<br />\' . trim(get_comment($parent_id)->comment_content) . \'</p> <p>\' . trim($comment->comment_author) . \' 给您的回复:<br />\' . trim($comment->comment_content) . \'<br /></p> <p>您可以点击 查看回复的完整內容</p> <p>还要再度光临 \' . get_option(\'blogname\') . \'</p> <p>(此邮件由系统自动发送,请勿回复.)</p> </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 ); //echo \'mail to \', $to, \'<br/> \' , $subject, $message; // for testing } } add_action(\'comment_post\', \'comment_mail_notify\'); // -- END ----------------------------------------
4、WORDPRESS实现评论审核通过 邮件回复功能
先在WP设置中,两个关于邮件的选项勾选:
然后将下面的代码添加到当前主题的 functions.php 即可:
/* 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 的回复才可发. 可视个人需修改上面的条件. */ $wp_email = \'no-reply@\' . preg_replace(\'#^www\.#\', \'\', strtolower($_SERVER[\'SERVER_NAME\'])); // e-mail 发出点, no-reply 可改为可用的 e-mail. $subject = \'您在 [\' . get_option("blogname") . \'] 的留言有了回复\'; $message = \' <div style=" border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;"> <p>\' . trim(get_comment($parent_id)->comment_author) . \', 您好!</p> <p>您曾在《\' . get_the_title($comment->comment_post_ID) . \'》的留言:<br />\' . trim(get_comment($parent_id)->comment_content) . \'</p> <p>\' . trim($comment->comment_author) . \' 给您的回复:<br />\' . trim($comment->comment_content) . \'<br /></p> <p>您可以点击 查看回复的完整內容</p> <p>还要再度光临 \' . get_option(\'blogname\') . \'</p> <p>(此邮件由系统自动发送,请勿回复.)</p> </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 ); //echo \'mail to \', $to, \'<br/> \' , $subject, $message; // for testing } } add_action(\'comment_post\', \'comment_mail_notify\'); // -- END ----------------------------------------
以上代码来自百度经验,以及一些帖子经验,因为无法追溯具体出处,故没法注明版权信息,请远作者谅解!
好了,经过一番折腾,邮件测试一切OK。