#!/usr/bin/env node

// Test E-Mail-Konfiguration
// Verwendung: node test-email.js "empfaenger@example.com"

require('dotenv').config();
const nodemailer = require('nodemailer');

const recipientEmail = process.argv[2] || 'tsschulz@gmx.net';

console.log('📧 Teste E-Mail-Konfiguration...');
console.log('');
console.log('SMTP-Server:', process.env.EMAIL_HOST);
console.log('Port:', process.env.EMAIL_PORT);
console.log('Secure:', process.env.EMAIL_SECURE);
console.log('User:', process.env.EMAIL_USER);
console.log('From:', process.env.EMAIL_FROM);
console.log('An:', recipientEmail);
console.log('');

// Erstelle Transporter
const transporter = nodemailer.createTransport({
    host: process.env.EMAIL_HOST,
    port: parseInt(process.env.EMAIL_PORT),
    secure: process.env.EMAIL_SECURE === 'true',
    auth: {
        user: process.env.EMAIL_USER,
        pass: process.env.EMAIL_PASSWORD
    }
});

// Test-E-Mail senden
async function sendTestEmail() {
    try {
        console.log('🔄 Verbinde mit SMTP-Server...');
        
        // Verify connection
        await transporter.verify();
        console.log('✅ SMTP-Verbindung erfolgreich!');
        console.log('');

        console.log('📤 Sende Test-E-Mail...');
        
        const info = await transporter.sendMail({
            from: `"${process.env.EMAIL_FROM_NAME || 'TimeClock'}" <${process.env.EMAIL_FROM}>`,
            to: recipientEmail,
            subject: 'TimeClock v3 - Test E-Mail',
            text: `Dies ist eine Test-E-Mail von TimeClock v3.

Wenn du diese E-Mail erhältst, funktioniert die E-Mail-Konfiguration korrekt!

Gesendet am: ${new Date().toLocaleString('de-DE')}

---
TimeClock v3 Zeiterfassung
${process.env.FRONTEND_URL || 'https://stechuhr3.tsschulz.de'}
`,
            html: `
                <h2>TimeClock v3 - Test E-Mail</h2>
                <p>Dies ist eine Test-E-Mail von TimeClock v3.</p>
                <p><strong>Wenn du diese E-Mail erhältst, funktioniert die E-Mail-Konfiguration korrekt!</strong></p>
                <p>Gesendet am: ${new Date().toLocaleString('de-DE')}</p>
                <hr>
                <p style="color: #666; font-size: 12px;">
                    TimeClock v3 Zeiterfassung<br>
                    <a href="${process.env.FRONTEND_URL || 'https://stechuhr3.tsschulz.de'}">${process.env.FRONTEND_URL || 'https://stechuhr3.tsschulz.de'}</a>
                </p>
            `
        });

        console.log('');
        console.log('✅ E-Mail erfolgreich gesendet!');
        console.log('');
        console.log('Message ID:', info.messageId);
        console.log('Response:', info.response);
        console.log('');
        console.log('🎉 E-Mail-Konfiguration funktioniert!');
        console.log('');
        console.log('📬 Prüfe dein E-Mail-Postfach:', recipientEmail);
        console.log('   (inkl. Spam-Ordner)');

        process.exit(0);

    } catch (error) {
        console.error('');
        console.error('❌ Fehler beim E-Mail-Versand:');
        console.error('');
        console.error(error.message);
        console.error('');
        
        if (error.code === 'EAUTH') {
            console.error('💡 SMTP-Authentifizierung fehlgeschlagen!');
            console.error('   Prüfe EMAIL_USER und EMAIL_PASSWORD in .env');
        } else if (error.code === 'ECONNECTION') {
            console.error('💡 Verbindung zum SMTP-Server fehlgeschlagen!');
            console.error('   Prüfe EMAIL_HOST und EMAIL_PORT in .env');
        } else if (error.code === 'ETIMEDOUT') {
            console.error('💡 Timeout beim Verbinden!');
            console.error('   Prüfe Firewall-Einstellungen (Port', process.env.EMAIL_PORT, ')');
        }
        
        console.error('');
        console.error('Aktuelle Konfiguration:');
        console.error('  EMAIL_HOST:', process.env.EMAIL_HOST);
        console.error('  EMAIL_PORT:', process.env.EMAIL_PORT);
        console.error('  EMAIL_SECURE:', process.env.EMAIL_SECURE);
        console.error('  EMAIL_USER:', process.env.EMAIL_USER);
        console.error('  EMAIL_FROM:', process.env.EMAIL_FROM);

        process.exit(1);
    }
}

sendTestEmail();

