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。
下载地址
来源:蓝奏云
THE END