query("SELECT c.*, w.inbox_rate FROM admin.brain_configs c JOIN admin.brain_winners w ON w.config_id = c.id WHERE w.is_active = true ORDER BY w.inbox_rate DESC LIMIT 1")->fetch(PDO::FETCH_ASSOC); if (!$winner) die("No winner\n"); // === ADX FORMAT: Use offer_creatives === $sql = $requestedOffer ? "SELECT oc.*, o.name as offer_name, o.tracking_url FROM admin.offer_creatives oc JOIN affiliate.offers o ON o.id = oc.offer_id WHERE oc.offer_id = $requestedOffer AND oc.status='active' AND oc.html_body IS NOT NULL AND oc.html_body != '' ORDER BY RANDOM() LIMIT 1" : "SELECT oc.*, o.name as offer_name, o.tracking_url FROM admin.offer_creatives oc JOIN affiliate.offers o ON o.id = oc.offer_id WHERE oc.status='active' AND oc.html_body IS NOT NULL AND oc.html_body != '' ORDER BY RANDOM() LIMIT 1"; $cr = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC); if (!$cr) die("No active creative in offer_creatives\n"); $subject = $cr['subject_line'] ?? 'Special offer'; $fromName = $cr['from_name'] ?? 'Customer Support'; $domain = $cr['from_domain'] ?? 'culturellemejean.charity'; $fromEmail = "hello@$domain"; // Build ADX context for tag engine $adxCtx = [ "domain" => $domain, "email" => $toEmail, "from_name" => $fromName, "subject" => $subject, "process_id" => rand(100,999), "user_id" => 1, "vmta_id" => rand(1,50), "offer_id" => (int)($cr['offer_id'] ?? 0), "list_id" => rand(1,10), "client_id" => rand(10000,99999), "process_type" => "md", "link_type" => "routing", "placeholders" => [ $cr["landing_url"] ?? $cr["tracking_url"] ?? "", $cr["s3_image_url"] ?? "", $cr["preheader"] ?? "", $domain ], "content_transfer_encoding" => "quoted-printable", "content_type" => "text/html", "charset" => "UTF-8" ]; $body = adx_replace_tags($cr['html_body'], $adxCtx); $subject = adx_replace_tags($subject, $adxCtx); echo "BRAIN v5 (ADX)\n"; echo " Offer: #{$cr['offer_id']} - " . substr($cr['offer_name'],0,45) . "\n"; echo " Creative: {$cr['creative_name']}\n"; echo " From: $fromName <$fromEmail>\n"; echo " Subject: $subject\n"; echo " To: $toEmail\n"; echo " HTML: " . strlen($body) . " bytes\n\n"; // Send via MTA-EU with DKIM $response = mta_eu_send($toEmail, $subject, $body, $domain, $fromName, $fromEmail); // Update stats $pdo->exec("UPDATE admin.brain_winners SET times_used = times_used + 1, last_used_at = NOW() WHERE config_id = {$winner['id']}"); $pdo->prepare("UPDATE admin.offer_creatives SET times_used = COALESCE(times_used,0) + 1, last_used = NOW() WHERE id = ?")->execute([$cr['id']]); echo strpos($response,'OK')!==false ? "ENVOYE!\n" : "FAIL: $response\n";