WordPress纯代码配置评论邮件通知
默认情况下,WordPress 使用本地的PHP邮件功能,并且所发出的电子邮件经常会被邮件服务商标记为垃圾邮件,而且国内服务器商都是屏蔽了25端口的,导致无法使用PHP邮件功能。使用SMTP服务器是确保WordPress电子邮件可传递性。
本站使用SMTP延迟发送评论通知邮件。
发送邮件的条件:
- 提交评论时无需审批的评论
- 在后台审核通过的评论
延迟发送时间:10秒。
本站所用代码如下,在主题functions.php文件中:
//smtp发送邮件功能
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp( $phpmailer ) {
$phpmailer->FromName = '***'; //名字
$phpmailer->Host = '***'; //smtp地址,可以到你使用的邮件设置里面找
$phpmailer->Port = 465; //端口,一般不用修改
$phpmailer->Username = '***'; //邮件账号
$phpmailer->Password = '***'; //邮件密码
$phpmailer->From = '***';//邮件账号
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25留空,465为ssl)一般不用修改
$phpmailer->IsSMTP();
}
// 评论通知延迟发送
add_action('comment_post', 'comment_mail_schedule');
add_action('comment_unapproved_to_approved', 'comment_mail_schedule');
function comment_mail_schedule($comment_id){
wp_schedule_single_event( time()+10, 'comment_mail_event',array($comment_id));
}
add_action('comment_mail_event','comment_mail_notify');
// 评论邮件通知
function comment_mail_notify( $comment_id ) {
$comment = get_comment( $comment_id );
if ( (int) $comment->comment_parent > 0 && ( $comment->comment_approved == '1' ) ) {
$wp_email = '邮件账号' . preg_replace( '#^www.#', '', strtolower( $_SERVER['SERVER_NAME'] ) ); // e-mail 发出点, no-reply 可改为可用的 e-mail.
$parent = get_comment( $comment->comment_parent );
$to = trim( $parent->comment_author_email );
if ($to == $comment->comment_author_email){
return;
}
$subject = '[' . get_option( "blogname" ) . '] 消息通知';
$title = trim( get_the_title( $comment->comment_post_ID ) );
$comment_link = get_comment_link($comment_id); // 获取评论链接
$message = '<div style="background-color:#F6F5F2; border:1px solid #d8e3e8; color:#434343; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
<p>' . trim($parent->comment_author) . ',您好!</p>
<p>您曾在《' . $title . '》留言:</p>
<p>' . trim($parent->comment_content) . '</p>
<p>' . trim($comment->comment_author) . ' 给您回复:</p>
<p>' . trim($comment->comment_content) . '</p>
<p>您可以点击 <a href="' . $comment_link . '">查看完整内容</a></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 );
}
}
以上代码希望能对大家有所帮助~
评论回复邮件提醒应该算是WP的标配功能了~
@龙笑天 默认只通知管理员吧,而且默认是没有评论审核判定的
嗯 对 一般主题作者都会额外加上