#!/usr/bin/env node

// Test SMTP ultra-simple pour identifier le problème
const nodemailer = require('nodemailer');
require('dotenv').config();

console.log('🔍 Test SMTP Simple\n');
console.log('Configuration:');
console.log('  SMTP_HOST:', process.env.SMTP_HOST || 'NON DÉFINI');
console.log('  SMTP_PORT:', process.env.SMTP_PORT || 'NON DÉFINI');
console.log('  SMTP_USER:', process.env.SMTP_USER || 'NON DÉFINI');
console.log('  SMTP_PASS:', process.env.SMTP_PASS ? '***' : 'NON DÉFINI');
console.log('');

const host = process.env.SMTP_HOST;
const port = parseInt(process.env.SMTP_PORT || '2525');
const user = process.env.SMTP_USER;
const pass = process.env.SMTP_PASS;

// Appliquer le même fix DNS que dans email.adapter.ts
const useDirectIP = host && host.includes('mailtrap.io');
const actualHost = useDirectIP ? '3.209.246.195' : host;
const serverName = useDirectIP ? 'smtp.mailtrap.io' : host;

console.log('Fix DNS:');
console.log('  Utilise IP directe:', useDirectIP);
console.log('  Host réel:', actualHost);
console.log('  Server name:', serverName);
console.log('');

const transporter = nodemailer.createTransport({
  host: actualHost,
  port,
  secure: false,
  auth: { user, pass },
  tls: {
    rejectUnauthorized: false,
    servername: serverName,
  },
  connectionTimeout: 10000,
  greetingTimeout: 10000,
  socketTimeout: 30000,
  dnsTimeout: 10000,
});

async function test() {
  try {
    console.log('Test 1: Vérification de la connexion...');
    await transporter.verify();
    console.log('✅ Connexion SMTP OK\n');

    console.log("Test 2: Envoi d'un email...");
    const info = await transporter.sendMail({
      from: 'noreply@xpeditis.com',
      to: 'test@example.com',
      subject: 'Test - ' + new Date().toISOString(),
      html: "<h1>Test réussi!</h1><p>Ce message confirme que l'envoi d'email fonctionne.</p>",
    });

    console.log('✅ Email envoyé avec succès!');
    console.log('   Message ID:', info.messageId);
    console.log('   Response:', info.response);
    console.log('');
    console.log('✅ TOUS LES TESTS RÉUSSIS - Le SMTP fonctionne!');
    process.exit(0);
  } catch (error) {
    console.error('❌ ERREUR:', error.message);
    console.error('   Code:', error.code);
    console.error('   Command:', error.command);
    process.exit(1);
  }
}

test();
