'', 'priority' => '3', 'content_type' => 'text/html', 'custom_headers' => '{}', 'notes' => 'Clean no X-Mailer (97% inbox on Exchange)'], ['x_mailer' => 'Microsoft Outlook 16.0', 'priority' => '3', 'content_type' => 'text/html', 'custom_headers' => '{"X-MS-Exchange-Organization-AuthSource":"exchange.local"}', 'notes' => 'Outlook mimicry'], ['x_mailer' => 'Apple Mail', 'priority' => '3', 'content_type' => 'multipart/alternative', 'custom_headers' => '{}', 'notes' => 'Apple Mail mimicry'], ['x_mailer' => '', 'priority' => '1', 'content_type' => 'text/html', 'custom_headers' => '{"X-Priority":"1","Importance":"high"}', 'notes' => 'High priority clean'], ['x_mailer' => 'Thunderbird 115.0', 'priority' => '3', 'content_type' => 'text/html', 'custom_headers' => '{"User-Agent":"Thunderbird 115.0"}', 'notes' => 'Thunderbird mimicry'] ]; foreach ($methods as $m) { $target_isps = json_decode($m['best_for_isps'], true) ?: ['ALL']; foreach ($isps as $isp) { // Only create if method is good for this ISP $match = in_array('ALL', $target_isps) || in_array(strtoupper($isp['isp_name']), array_map('strtoupper', $target_isps)); if (!$match) continue; foreach ($header_sets as $h) { $mk = pg_escape_string($db, $m['method_key']); $isn = pg_escape_string($db, $isp['isp_name']); $xm = pg_escape_string($db, $h['x_mailer']); $ct = pg_escape_string($db, $h['content_type']); $ch = pg_escape_string($db, $h['custom_headers']); $nt = pg_escape_string($db, $h['notes'] . ' | ' . $isp['filter_type'] . ' filter | delay:' . $isp['recommended_delay'] . 's'); $r = pg_query($db, "INSERT INTO brain_send_configs(send_method, isp_target, from_domain, smtp_host, smtp_port, x_mailer, priority, content_type, custom_headers, inbox_rate, status, notes, created_at) VALUES('$mk', '$isn', 'culturellemejean.charity', '', 0, '$xm', '{$h['priority']}', '$ct', '$ch', 0, 'untested', '$nt', NOW()) ON CONFLICT DO NOTHING"); if (pg_affected_rows($r) > 0) $configs_created++; } } } echo json_encode([ 'status' => 'success', 'configs_created' => $configs_created, 'methods_used' => count($methods), 'isps_targeted' => count($isps), 'header_variations' => count($header_sets), 'total_configs' => pg_fetch_result(pg_query($db, "SELECT COUNT(*) FROM brain_send_configs"), 0) ]); break; case 'auto_select': // Brain selects best config for given ISP $isp = $_GET['isp'] ?? 'Gmail'; // Try winner first $winner = pg_fetch_assoc(pg_query($db, "SELECT * FROM brain_send_configs WHERE isp_target='".pg_escape_string($db,$isp)."' AND is_winner=true AND status='active' ORDER BY inbox_rate DESC LIMIT 1")); if ($winner) { echo json_encode(['status' => 'success', 'source' => 'winner', 'config' => $winner]); break; } // Fall back to best tested $best = pg_fetch_assoc(pg_query($db, "SELECT * FROM brain_send_configs WHERE isp_target='".pg_escape_string($db,$isp)."' AND inbox_rate > 0 ORDER BY inbox_rate DESC LIMIT 1")); if ($best) { echo json_encode(['status' => 'success', 'source' => 'best_tested', 'config' => $best]); break; } // Fall back to default safe config echo json_encode([ 'status' => 'success', 'source' => 'default_safe', 'config' => [ 'send_method' => 'o365_smtp', 'isp_target' => $isp, 'from_domain' => 'culturellemejean.charity', 'x_mailer' => '', 'priority' => '3', 'content_type' => 'text/html', 'custom_headers' => '{}', 'notes' => 'Default safe: O365 SMTP, no X-Mailer' ] ]); break; case 'record_result': // Record a send test result to learn $config_id = (int)($_POST['config_id'] ?? 0); $inbox = (bool)($_POST['inbox'] ?? false); if (!$config_id) { echo json_encode(['error' => 'Need config_id']); break; } $field = $inbox ? 'total_inbox' : 'total_sent'; pg_query($db, "UPDATE brain_send_configs SET total_sent = total_sent + 1, total_inbox = total_inbox + " . ($inbox ? 1 : 0) . ", inbox_rate = CASE WHEN total_sent > 0 THEN (total_inbox::float / total_sent * 100) ELSE 0 END, is_winner = CASE WHEN total_sent >= 10 AND (total_inbox::float / total_sent) >= 0.85 THEN true ELSE false END, status = CASE WHEN total_sent >= 10 THEN 'tested' ELSE 'testing' END, updated_at = NOW() WHERE id = $config_id"); // Auto-promote to winner if >=85% inbox after 10+ sends $cfg = pg_fetch_assoc(pg_query($db, "SELECT * FROM brain_send_configs WHERE id=$config_id")); if ($cfg && $cfg['is_winner'] == 't') { pg_query($db, "INSERT INTO brain_winners(send_method, isp_target, from_domain, inbox_rate, total_sent, total_inbox, config_data, promoted_at) VALUES('{$cfg['send_method']}', '{$cfg['isp_target']}', '{$cfg['from_domain']}', {$cfg['inbox_rate']}, {$cfg['total_sent']}, {$cfg['total_inbox']}, '".pg_escape_string($db, json_encode($cfg))."', NOW()) ON CONFLICT DO NOTHING"); } echo json_encode(['status' => 'success', 'config' => $cfg]); break; case 'leaderboard': $r = pg_query($db, "SELECT send_method, isp_target, x_mailer, inbox_rate, total_sent, total_inbox, is_winner, status, notes FROM brain_send_configs WHERE total_sent > 0 ORDER BY inbox_rate DESC, total_sent DESC LIMIT 50"); $configs = []; while ($row = pg_fetch_assoc($r)) $configs[] = $row; echo json_encode(['status' => 'success', 'leaderboard' => $configs]); break; case 'status': $s = pg_fetch_assoc(pg_query($db, " SELECT (SELECT COUNT(*) FROM brain_send_configs) as total_configs, (SELECT COUNT(*) FROM brain_send_configs WHERE status='tested') as tested, (SELECT COUNT(*) FROM brain_send_configs WHERE is_winner=true) as winners, (SELECT COUNT(*) FROM brain_send_configs WHERE status='untested') as untested, (SELECT COUNT(DISTINCT isp_target) FROM brain_send_configs) as isps_covered, (SELECT COUNT(DISTINCT send_method) FROM brain_send_configs) as methods_used, (SELECT COALESCE(MAX(inbox_rate),0) FROM brain_send_configs) as best_inbox_rate, (SELECT COUNT(*) FROM brain_winners) as promoted_winners ")); echo json_encode(['status' => 'success', 'brain' => $s]); break; }