feat: 邮件系统优化和垃圾评论通知
- 移除所有邮件模板中的 emoji,表述正式化 - 为所有用户邮件添加退订功能支持 - 新增垃圾评论通知邮件模板(spam_notify) - 检测到垃圾评论时自动发送邮件给评论者 - 邮件包含识别理由、AI 模型、服务提供商、识别码等信息 - 提供查询识别详情和退订链接
This commit is contained in:
74
email-templates/spam-notify.php
Normal file
74
email-templates/spam-notify.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/**
|
||||
* Argon 垃圾评论通知邮件
|
||||
*
|
||||
* 当评论被 AI 识别为垃圾评论时发送给评论者
|
||||
*/
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送垃圾评论通知邮件给评论者
|
||||
*
|
||||
* @param WP_Comment $comment 评论对象
|
||||
* @param array $detection_result AI 检测结果
|
||||
* @param string $detection_code 识别码
|
||||
* @return bool 发送是否成功
|
||||
*/
|
||||
function argon_send_spam_notify_email($comment, $detection_result, $detection_code) {
|
||||
// 检查评论者是否留了邮箱
|
||||
if (empty($comment->comment_author_email)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 获取文章信息
|
||||
$post = get_post($comment->comment_post_ID);
|
||||
if (!$post) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 获取 AI 配置信息
|
||||
$provider = get_option('argon_ai_summary_provider', 'openai');
|
||||
$model = get_option('argon_ai_summary_model', '');
|
||||
|
||||
$provider_names = [
|
||||
'openai' => 'OpenAI',
|
||||
'anthropic' => 'Anthropic',
|
||||
'deepseek' => 'DeepSeek',
|
||||
'qianwen' => '通义千问',
|
||||
'wenxin' => '文心一言',
|
||||
'doubao' => '豆包',
|
||||
'kimi' => 'Kimi',
|
||||
'zhipu' => '智谱',
|
||||
'siliconflow' => 'SiliconFlow'
|
||||
];
|
||||
|
||||
$provider_display = isset($provider_names[$provider]) ? $provider_names[$provider] : $provider;
|
||||
|
||||
// 生成退订链接(使用通用的邮件退订机制)
|
||||
$unsubscribe_token = md5($comment->comment_author_email . wp_salt());
|
||||
$unsubscribe_url = add_query_arg([
|
||||
'action' => 'unsubscribe_spam_notify',
|
||||
'email' => urlencode($comment->comment_author_email),
|
||||
'token' => $unsubscribe_token
|
||||
], home_url());
|
||||
|
||||
// 准备模板变量
|
||||
$vars = array(
|
||||
'commenter_name' => $comment->comment_author,
|
||||
'post_title' => $post->post_title,
|
||||
'post_url' => get_permalink($post->ID),
|
||||
'comment_content' => $comment->comment_content,
|
||||
'ai_spam_reason' => isset($detection_result['reason']) ? $detection_result['reason'] : '',
|
||||
'ai_model' => $model,
|
||||
'ai_provider' => $provider_display,
|
||||
'ai_detection_code' => $detection_code,
|
||||
'query_url' => home_url('/ai-query?code=' . $detection_code),
|
||||
'unsubscribe_url' => $unsubscribe_url,
|
||||
);
|
||||
|
||||
// 发送邮件
|
||||
return argon_send_email($comment->comment_author_email, 'spam_notify', $vars);
|
||||
}
|
||||
Reference in New Issue
Block a user