#!/usr/bin/env php getDatabaseConfig(); // Initialiser la base de données avec la configuration Database::init($dbConfig); $db = Database::getInstance(); echo "=== TEST DE LA QUEUE D'EMAILS ===\n\n"; // Statistiques générales $stmt = $db->query(' SELECT status, COUNT(*) as count, MIN(created_at) as oldest, MAX(created_at) as newest FROM email_queue GROUP BY status '); $stats = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "STATISTIQUES:\n"; echo "-------------\n"; foreach ($stats as $stat) { echo sprintf( "Status: %s - Nombre: %d (Plus ancien: %s, Plus récent: %s)\n", $stat['status'], $stat['count'], $stat['oldest'] ?? 'N/A', $stat['newest'] ?? 'N/A' ); } echo "\n"; // Emails en attente $stmt = $db->prepare(' SELECT eq.id, eq.fk_pass, eq.to_email, eq.subject, eq.created_at, eq.attempts, eq.status, p.fk_type, p.montant, p.nom_recu FROM email_queue eq LEFT JOIN ope_pass p ON eq.fk_pass = p.id WHERE eq.status = ? ORDER BY eq.created_at DESC LIMIT 10 '); $stmt->execute(['pending']); $pendingEmails = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($pendingEmails)) { echo "Aucun email en attente.\n"; } else { echo "EMAILS EN ATTENTE (10 plus récents):\n"; echo "------------------------------------\n"; foreach ($pendingEmails as $email) { echo sprintf( "ID: %d | Passage: %d | Destinataire: %s\n", $email['id'], $email['fk_pass'], $email['to_email'] ); echo sprintf( " Sujet: %s\n", $email['subject'] ); echo sprintf( " Créé le: %s | Tentatives: %d\n", $email['created_at'], $email['attempts'] ); if ($email['fk_pass'] > 0) { echo sprintf( " Passage - Type: %s | Montant: %.2f€ | Reçu: %s\n", $email['fk_type'] == 1 ? 'DON' : 'Autre', $email['montant'] ?? 0, $email['nom_recu'] ?? 'Non généré' ); } echo "---\n"; } } // Emails échoués $stmt = $db->prepare(' SELECT id, fk_pass, to_email, subject, created_at, attempts, error_message FROM email_queue WHERE status = ? ORDER BY created_at DESC LIMIT 5 '); $stmt->execute(['failed']); $failedEmails = $stmt->fetchAll(PDO::FETCH_ASSOC); if (!empty($failedEmails)) { echo "\nEMAILS ÉCHOUÉS (5 plus récents):\n"; echo "--------------------------------\n"; foreach ($failedEmails as $email) { echo sprintf( "ID: %d | Passage: %d | Destinataire: %s\n", $email['id'], $email['fk_pass'], $email['to_email'] ); echo sprintf( " Sujet: %s\n", $email['subject'] ); echo sprintf( " Tentatives: %d | Erreur: %s\n", $email['attempts'], $email['error_message'] ?? 'Non spécifiée' ); echo "---\n"; } } // Vérifier la configuration SMTP echo "\nCONFIGURATION SMTP:\n"; echo "-------------------\n"; $smtpConfig = $appConfig->getSmtpConfig(); $emailConfig = $appConfig->getEmailConfig(); echo "Host: " . ($smtpConfig['host'] ?? 'Non configuré') . "\n"; echo "Port: " . ($smtpConfig['port'] ?? 'Non configuré') . "\n"; echo "Username: " . ($smtpConfig['user'] ?? 'Non configuré') . "\n"; echo "Password: " . (isset($smtpConfig['pass']) ? '***' : 'Non configuré') . "\n"; echo "Encryption: " . ($smtpConfig['secure'] ?? 'Non configuré') . "\n"; echo "From Email: " . ($emailConfig['from'] ?? 'Non configuré') . "\n"; echo "Contact Email: " . ($emailConfig['contact'] ?? 'Non configuré') . "\n"; echo "\n=== FIN DU TEST ===\n"; } catch (Exception $e) { echo "ERREUR: " . $e->getMessage() . "\n"; exit(1); } exit(0);