WordPress纯代码配置评论邮件通知

默认情况下,WordPress 使用本地的PHP邮件功能,并且所发出的电子邮件经常会被邮件服务商标记为垃圾邮件,而且国内服务器商都是屏蔽了25端口的,导致无法使用PHP邮件功能。使用SMTP服务器是确保WordPress电子邮件可传递性。

本站使用SMTP延迟发送评论通知邮件。

发送邮件的条件:

  1. 提交评论时无需审批的评论
  2. 在后台审核通过的评论

延迟发送时间: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 );
    }
}

以上代码希望能对大家有所帮助~

标签:#, #, #, #

评论区

  1. 龙笑天说道:

    评论回复邮件提醒应该算是WP的标配功能了~

  2. 龙笑天说道:

    嗯 对 一般主题作者都会额外加上

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注