<?php
/**
 * Script que prueba automáticamente diferentes configuraciones SMTP
 * Útil para encontrar la configuración correcta del hosting
 */

require_once 'config/email-config.php';
require_once 'config/smtp-mailer.php';

header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Prueba Automática SMTP - SIGVEM</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 900px;
            margin: 20px auto;
            padding: 20px;
            background: #f5f5f5;
        }
        .container {
            background: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        h1 {
            color: #333;
            border-bottom: 3px solid #0d6efd;
            padding-bottom: 10px;
        }
        .test-item {
            background: #f8f9fa;
            padding: 15px;
            margin: 10px 0;
            border-radius: 5px;
            border-left: 4px solid #6c757d;
        }
        .test-item.success {
            border-left-color: #28a745;
            background: #d4edda;
        }
        .test-item.error {
            border-left-color: #dc3545;
            background: #f8d7da;
        }
        .test-item.testing {
            border-left-color: #ffc107;
            background: #fff3cd;
        }
        code {
            background: #f4f4f4;
            padding: 2px 6px;
            border-radius: 3px;
            font-family: 'Courier New', monospace;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>🔍 Prueba Automática de Configuraciones SMTP</h1>
        <p>Este script prueba automáticamente diferentes configuraciones SMTP comunes para encontrar la correcta.</p>
        
        <?php
        $config = getEmailConfig();
        $smtpConfig = $config['smtp'];
        $fromEmail = $config['sender']['from_email'];
        $fromName = $config['sender']['from_name'];
        
        // Configuraciones a probar
        $configsToTest = [
            [
                'name' => 'mail.servicios-jjr.com:587 (TLS)',
                'host' => 'mail.servicios-jjr.com',
                'port' => 587,
                'encryption' => 'tls'
            ],
            [
                'name' => 'smtp.servicios-jjr.com:587 (TLS)',
                'host' => 'smtp.servicios-jjr.com',
                'port' => 587,
                'encryption' => 'tls'
            ],
            [
                'name' => 'mail.servicios-jjr.com:465 (SSL)',
                'host' => 'mail.servicios-jjr.com',
                'port' => 465,
                'encryption' => 'ssl'
            ],
            [
                'name' => 'smtp.servicios-jjr.com:465 (SSL)',
                'host' => 'smtp.servicios-jjr.com',
                'port' => 465,
                'encryption' => 'ssl'
            ],
            [
                'name' => 'localhost:587 (TLS)',
                'host' => 'localhost',
                'port' => 587,
                'encryption' => 'tls'
            ],
            [
                'name' => 'localhost:25 (Sin encriptación)',
                'host' => 'localhost',
                'port' => 25,
                'encryption' => ''
            ]
        ];
        
        $testEmail = $smtpConfig['smtp_username'];
        $subject = "Prueba SMTP - " . date('H:i:s');
        $message = "Prueba automática de configuración SMTP";
        $htmlMessage = "<p>Prueba automática de configuración SMTP</p>";
        
        $successfulConfig = null;
        
        foreach ($configsToTest as $testConfig) {
            echo "<div class='test-item testing'>";
            echo "<strong>Probando:</strong> " . htmlspecialchars($testConfig['name']) . "...<br>";
            echo "<small>Servidor: <code>" . htmlspecialchars($testConfig['host']) . "</code> | ";
            echo "Puerto: <code>" . htmlspecialchars($testConfig['port']) . "</code> | ";
            echo "Encriptación: <code>" . ($testConfig['encryption'] ?: 'Ninguna') . "</code></small>";
            echo "</div>";
            
            flush();
            ob_flush();
            
            try {
                $mailer = new SMTPMailer(
                    $testConfig['host'],
                    $testConfig['port'],
                    $smtpConfig['smtp_username'],
                    $smtpConfig['smtp_password'],
                    $testConfig['encryption']
                );
                
                // Solo probar conexión, no enviar email completo
                $result = $mailer->send($testEmail, $subject, $message, $fromEmail, $fromName, $htmlMessage);
                
                if ($result) {
                    echo "<div class='test-item success'>";
                    echo "✓ <strong>¡ÉXITO!</strong> La configuración <strong>" . htmlspecialchars($testConfig['name']) . "</strong> funciona correctamente.<br>";
                    echo "<strong>Configuración recomendada para config/email-config.php:</strong><br>";
                    echo "<code style='display: block; padding: 10px; background: white; margin: 10px 0;'>";
                    echo "private \$smtp_host = '" . htmlspecialchars($testConfig['host']) . "';<br>";
                    echo "private \$smtp_port = " . htmlspecialchars($testConfig['port']) . ";<br>";
                    echo "private \$smtp_encryption = '" . htmlspecialchars($testConfig['encryption'] ?: 'tls') . "';";
                    echo "</code>";
                    echo "</div>";
                    $successfulConfig = $testConfig;
                    break; // Detener pruebas si encontramos una que funciona
                } else {
                    $error = $mailer->getLastError();
                    echo "<div class='test-item error'>";
                    echo "✗ <strong>Falló:</strong> " . htmlspecialchars($testConfig['name']) . "<br>";
                    if ($error) {
                        echo "<small>Error: <code>" . htmlspecialchars($error) . "</code></small>";
                    }
                    echo "</div>";
                }
            } catch (Exception $e) {
                echo "<div class='test-item error'>";
                echo "✗ <strong>Error:</strong> " . htmlspecialchars($testConfig['name']) . "<br>";
                echo "<small>Excepción: <code>" . htmlspecialchars($e->getMessage()) . "</code></small>";
                echo "</div>";
            }
            
            flush();
            ob_flush();
        }
        
        if (!$successfulConfig) {
            echo "<div class='test-item error'>";
            echo "<strong>❌ Ninguna configuración funcionó</strong><br><br>";
            echo "Posibles causas:<ul>";
            echo "<li>El servidor SMTP requiere autenticación diferente</li>";
            echo "<li>Las credenciales son incorrectas</li>";
            echo "<li>El firewall del hosting bloquea las conexiones SMTP salientes</li>";
            echo "<li>El hosting requiere usar la función mail() nativa de PHP en lugar de SMTP</li>";
            echo "</ul>";
            echo "<strong>Recomendación:</strong> Contacta al soporte de tu hosting y pregunta:<ul>";
            echo "<li>¿Cuál es el servidor SMTP para el dominio servicios-jjr.com?</li>";
            echo "<li>¿Qué puerto y encriptación debo usar?</li>";
            echo "<li>¿Puedo usar SMTP o debo usar la función mail() de PHP?</li>";
            echo "</ul>";
            echo "</div>";
        }
        ?>
        
        <hr>
        <p style="text-align: center; color: #666;">
            <small>Script de prueba automática SMTP - SIGVEM | <?php echo date('Y'); ?></small>
        </p>
    </div>
</body>
</html>

