WordPress添加评论邮箱通知

前言

一直很想用评论邮件通知功能,但是一直都没有实现,今天突然有了些思路,于是就尝试一下。

截图

教程

首先下载PHPMailer邮件库,然后在function.php里添加如下代码:

// 创建一个函数来发送邮件通知管理员
function send_comment_notification($comment_ID) {
        // 这是评论请求,执行评论邮件通知功能

        // 检查是否是评论的 AJAX 请求
        if (defined('DOING_AJAX') && isset($_POST['action']) && $_POST['action'] == 'add-comment') {
             return; // 如果是评论的 AJAX 请求,直接返回,不执行邮件发送
         }

        // 引入PHPMailer库
        require '/www/wwwroot/你的域名/PHPMailer/src/Exception.php';
        require '/www/wwwroot/你的域名/PHPMailer/src/PHPMailer.php';
        require '/www/wwwroot/你的域名/PHPMailer/src/SMTP.php';

        // 获取评论对象
        $comment = get_comment($comment_ID);

        // 获取文章对象
        $post = get_post($comment->comment_post_ID);

        // 设置管理员邮箱
        $admin_email = '收件人邮箱';

        // 创建邮件对象
        $mail = new PHPMailerPHPMailerPHPMailer;
        $mail->isSMTP();
        $mail->Host = '发件人邮箱服务器';
        $mail->SMTPAuth = true;
        $mail->Username = '发件人邮箱';
        $mail->Password = '邮箱密码';
        $mail->SMTPSecure = 'ssl';
        $mail->Port = 465;
        $mail->CharSet = 'UTF-8'; // 设置字符集为UTF-8
        $mail->setFrom('发件人邮箱', '邮箱名字');
        $mail->addAddress($admin_email);
        $mail->Subject = '有新的评论: ' . $post->post_title;
        $mail->Body = "姓名: " . $comment->comment_author . "n邮箱: " . $comment->comment_author_email . "n评论内容: " . $comment->comment_content . "nn文章链接: " . get_permalink($post);

        // 发送邮件
        if (!$mail->send()) {
            // 记录邮件发送失败状态到文件
            $log_message = date('Y-m-d H:i:s') . " - 邮件发送失败。错误信息: " . $mail->ErrorInfo . PHP_EOL;
            file_put_contents('/www/wwwroot/你的域名/PHPMailer/email_logs.txt', $log_message, FILE_APPEND);
        } else {
            // 记录邮件发送成功状态到文件
            $log_message = date('Y-m-d H:i:s') . " - 邮件已发送" . PHP_EOL;
            file_put_contents('/www/wwwroot/你的域名/PHPMailer/email_logs.txt', $log_message, FILE_APPEND);
        }
    }
// 钩子函数,当有新评论时调用send_comment_notification函数
add_action('wp_insert_comment', 'send_comment_notification');

最后在域名根目录创建一个email_logs.txt 用来记录发送记录,这样就不会影响系统对于评论成功与否的判断。

如果提示发送失败,可以尝试把ssl改成tls。

下载地址

download
来源:蓝奏云
THE END