96 lines
4.2 KiB
PHP
Executable File
96 lines
4.2 KiB
PHP
Executable File
error_log('=== MARKER: send_affiliate_offer.php ===');
|
|
<?php
|
|
/**
|
|
* SEND AFFILIATE OFFER via O365 accounts
|
|
* Usage: php send_affiliate_offer.php [offer_id] [to_email]
|
|
*/
|
|
|
|
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
|
|
|
|
$offerId = $argv[1] ?? null;
|
|
$toEmail = $argv[2] ?? 'Joecloud0101@proton.me';
|
|
|
|
// Récupérer une offre
|
|
if ($offerId) {
|
|
$offer = $pdo->query("SELECT * FROM affiliate.offers WHERE id = $offerId")->fetch(PDO::FETCH_ASSOC);
|
|
} else {
|
|
$offer = $pdo->query("SELECT * FROM affiliate.offers WHERE status = 'Activated' ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
}
|
|
if (!$offer) die("❌ Aucune offre trouvée\n");
|
|
|
|
// Récupérer un compte O365 actif aléatoire comme expéditeur
|
|
$o365 = $pdo->query("SELECT admin_email FROM admin.office_accounts WHERE status = 'Active' AND admin_email IS NOT NULL ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
$fromEmail = $o365['admin_email'] ?? 'offers@wevads.com';
|
|
|
|
// Récupérer le lien sponsor et unsub
|
|
$link = $pdo->query("SELECT value FROM affiliate.links WHERE offer_id = {$offer['id']} AND type = 'preview' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
$sponsorUrl = $link['value'] ?? 'https://google.com';
|
|
|
|
$unsub = $pdo->query("SELECT value FROM affiliate.links WHERE offer_id = {$offer['id']} AND type = 'unsub' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
$unsubUrl = $unsub['value'] ?? '#';
|
|
|
|
// Récupérer from_name et subject
|
|
$fromName = $pdo->query("SELECT value FROM affiliate.from_names WHERE offer_id = {$offer['id']} ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
$subject = $pdo->query("SELECT value FROM affiliate.subjects WHERE offer_id = {$offer['id']} ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
|
|
$senderName = $fromName['value'] ?? 'Special Offers';
|
|
$emailSubject = $subject['value'] ?? $offer['name'];
|
|
|
|
// Récupérer créatif HTML
|
|
$creative = $pdo->query("SELECT * FROM affiliate.creatives WHERE offer_id = {$offer['id']} ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
|
$htmlBody = $creative ? base64_decode($creative['value']) : null;
|
|
|
|
if (!$htmlBody) {
|
|
$htmlBody = '<!DOCTYPE html><html><body style="font-family:Arial;padding:20px;">
|
|
<div style="max-width:600px;margin:0 auto;background:#fff;padding:30px;">
|
|
<h2>' . htmlspecialchars($offer['name']) . '</h2>
|
|
<p>Exclusive offer for you!</p>
|
|
<p><a href="[CLICK_URL]" style="background:#007bff;color:#fff;padding:15px 30px;text-decoration:none;border-radius:5px;">CLAIM NOW</a></p>
|
|
<hr><p style="font-size:11px;color:#999;"><a href="[UNSUB_URL]">Unsubscribe</a></p>
|
|
</div></body></html>';
|
|
}
|
|
|
|
// Remplacer placeholders avec tracking
|
|
$trackingBase = 'https://culturellemejean.charity';
|
|
$encodedSponsor = base64_encode($sponsorUrl);
|
|
$clickUrl = "$trackingBase/click.php?url=$encodedSponsor&oid={$offer['id']}&e=" . urlencode($toEmail);
|
|
|
|
$htmlBody = str_replace(['[CLICK_URL]', '[url]', '{offer_link}'], $clickUrl, $htmlBody);
|
|
$htmlBody = str_replace(['[UNSUB_URL]', '[unsub]'], $unsubUrl, $htmlBody);
|
|
|
|
// Ajouter pixel tracking
|
|
$openPixel = "<img src=\"$trackingBase/tracking.php?act=op&oid={$offer['id']}&e=" . urlencode($toEmail) . "\" width=\"1\" height=\"1\">";
|
|
$htmlBody = str_replace('</body>', "$openPixel</body>", $htmlBody);
|
|
|
|
echo "📧 ENVOI OFFRE VIA O365\n";
|
|
echo " Offer: #{$offer['id']} - {$offer['name']}\n";
|
|
echo " Subject: $emailSubject\n";
|
|
echo " From: $senderName <$fromEmail>\n";
|
|
echo " To: $toEmail\n";
|
|
echo " Sponsor: $sponsorUrl\n\n";
|
|
|
|
// Envoyer via PMTA avec FROM = compte O365
|
|
$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:<$fromEmail>\r\n", "RCPT TO:<$toEmail>\r\n", "DATA\r\n"] as $cmd) {
|
|
fwrite($socket, $cmd);
|
|
fgets($socket);
|
|
}
|
|
|
|
$msg = "From: $senderName <$fromEmail>\r\n";
|
|
$msg .= "To: $toEmail\r\n";
|
|
$msg .= "Subject: $emailSubject\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$htmlBody\r\n.\r\n";
|
|
|
|
fwrite($socket, $msg);
|
|
$response = fgets($socket);
|
|
fwrite($socket, "QUIT\r\n");
|
|
fclose($socket);
|
|
|
|
echo strpos($response, '250') !== false ? "✅ ENVOYÉ!\n" : "❌ Erreur: $response\n";
|