81 lines
2.8 KiB
PHP
Executable File
81 lines
2.8 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* SEND REAL OFFER - Envoi de vraies offres avec tracking
|
|
* Usage: php send_real_offer.php [creative_id] [to_email]
|
|
*/
|
|
|
|
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
|
|
|
|
$creativeId = $argv[1] ?? null;
|
|
$toEmail = $argv[2] ?? 'Joecloud0101@proton.me';
|
|
|
|
// Si pas d'ID, prendre un créatif au hasard avec landing_url
|
|
if (!$creativeId) {
|
|
$creative = $pdo->query("SELECT * FROM admin.offer_creatives WHERE status = 'active' AND landing_url IS NOT NULL AND landing_url != '' ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
} else {
|
|
$creative = $pdo->query("SELECT * FROM admin.offer_creatives WHERE id = $creativeId")->fetch(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
if (!$creative) {
|
|
die("❌ Aucun créatif trouvé\n");
|
|
}
|
|
|
|
$from = 'offers@wevads.com';
|
|
$fromName = $creative['from_name'];
|
|
$subject = $creative['subject_line'];
|
|
$body = $creative['html_body'];
|
|
$landingUrl = $creative['landing_url'] ?: 'https://google.com';
|
|
|
|
// Tracking base
|
|
$trackingBase = 'https://culturellemejean.charity';
|
|
|
|
// Encoder l'URL en base64 pour click.php
|
|
$encodedUrl = base64_encode($landingUrl);
|
|
$clickUrl = "$trackingBase/click.php?url=$encodedUrl&cid={$creative['offer_id']}&e=" . urlencode($toEmail);
|
|
$unsubUrl = "$trackingBase/optout.php?cid={$creative['offer_id']}&e=" . urlencode($toEmail);
|
|
|
|
// Remplacer placeholders
|
|
$body = str_replace('[CLICK_URL]', $clickUrl, $body);
|
|
$body = str_replace('[UNSUB_URL]', $unsubUrl, $body);
|
|
|
|
// Ajouter pixel de tracking
|
|
$openPixel = "<img src=\"$trackingBase/tracking.php?act=op&cid={$creative['offer_id']}&e=" . urlencode($toEmail) . "\" width=\"1\" height=\"1\" style=\"display:none\">";
|
|
$body = str_replace('</body>', "$openPixel</body>", $body);
|
|
|
|
echo "📧 ENVOI OFFRE RÉELLE\n";
|
|
echo " Creative: #{$creative['id']} (Offer #{$creative['offer_id']})\n";
|
|
echo " Subject: $subject\n";
|
|
echo " From: $fromName <$from>\n";
|
|
echo " To: $toEmail\n";
|
|
echo " Landing: $landingUrl\n\n";
|
|
|
|
// Envoyer via PMTA
|
|
$socket = @fsockopen('127.0.0.1', 25, $errno, $errstr, 10);
|
|
if (!$socket) die("❌ PMTA connexion échouée\n");
|
|
|
|
fgets($socket);
|
|
foreach(["EHLO wevads.com\r\n", "MAIL FROM:<$from>\r\n", "RCPT TO:<$toEmail>\r\n", "DATA\r\n"] as $cmd) {
|
|
fwrite($socket, $cmd);
|
|
fgets($socket);
|
|
}
|
|
|
|
$msg = "From: $fromName <$from>\r\n";
|
|
$msg .= "To: $toEmail\r\n";
|
|
$msg .= "Subject: $subject\r\n";
|
|
$msg .= "MIME-Version: 1.0\r\n";
|
|
$msg .= "Content-Type: text/html; charset=UTF-8\r\n";
|
|
$msg .= "List-Unsubscribe: <$unsubUrl>\r\n";
|
|
$msg .= "\r\n$body\r\n.\r\n";
|
|
|
|
fwrite($socket, $msg);
|
|
$response = fgets($socket);
|
|
fwrite($socket, "QUIT\r\n");
|
|
fclose($socket);
|
|
|
|
if (strpos($response, '250') !== false) {
|
|
echo "✅ ENVOYÉ!\n";
|
|
$pdo->exec("UPDATE admin.offer_creatives SET times_used = times_used + 1, last_used = NOW() WHERE id = {$creative['id']}");
|
|
} else {
|
|
echo "❌ Erreur: $response\n";
|
|
}
|