import { type NextRequest, NextResponse } from "next/server"; import nodemailer from "nodemailer"; import SMTPTransport from "nodemailer/lib/smtp-transport"; import Mail from "nodemailer/lib/mailer"; // Email templates with beautiful designs const emailTemplates = { welcome: { subject: "Vielen Dank für deine Nachricht! 👋", template: (name: string, originalMessage: string) => ` Willkommen - Dennis Konkol

👋 Hallo ${name}!

Vielen Dank für deine Nachricht

Nachricht erhalten!

Vielen Dank für deine Nachricht! Ich habe sie erhalten und werde mich so schnell wie möglich bei dir melden.

Deine ursprüngliche Nachricht

${originalMessage}

🚀 Was passiert als nächstes?

📧

Schnelle Antwort

Ich antworte normalerweise innerhalb von 24 Stunden

💼

Projekt-Diskussion

Gerne besprechen wir dein Projekt im Detail

🤝

Zusammenarbeit

Lass uns gemeinsam etwas Großartiges schaffen!

Entdecke mehr von mir

🌐 Portfolio 💻 GitHub 💼 LinkedIn

Dennis Konkol • Software Engineer & Student
dk0.devcontact@dk0.dev

${new Date().toLocaleString('de-DE', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' })}

` }, project: { subject: "Projekt-Anfrage erhalten! 🚀", template: (name: string, originalMessage: string) => ` Projekt-Anfrage - Dennis Konkol

🚀 Projekt-Anfrage erhalten!

Hallo ${name}, lass uns etwas Großartiges schaffen!

💼

Bereit für dein Projekt!

Vielen Dank für deine Projekt-Anfrage! Ich bin gespannt darauf, mehr über deine Ideen zu erfahren und wie wir sie gemeinsam umsetzen können.

Deine Projekt-Nachricht

${originalMessage}

🎯 Mein Arbeitsprozess

💬

1. Erstgespräch

Wir besprechen deine Anforderungen im Detail

📋

2. Konzept & Planung

Ich erstelle ein detailliertes Konzept für dein Projekt

3. Entwicklung

Agile Entwicklung mit regelmäßigen Updates

🎉

4. Launch & Support

Deployment und kontinuierlicher Support

💬 Projekt besprechen

Dennis Konkol • Software Engineer & Student
dki.onecontact@dk0.dev

` }, quick: { subject: "Danke für deine Nachricht! ⚡", template: (name: string, originalMessage: string) => ` Quick Response - Dennis Konkol

⚡ Schnelle Antwort!

Hallo ${name}, danke für deine Nachricht!

Nachricht erhalten!

Vielen Dank für deine Nachricht! Ich werde mich so schnell wie möglich bei dir melden.

Deine Nachricht

${originalMessage}

📞 Kontakt

E-Mail: contact@dk0.dev
Portfolio: dki.one

Dennis Konkol • Software Engineer & Student
dki.one

` }, reply: { subject: "Antwort auf deine Nachricht 📧", template: (name: string, originalMessage: string) => ` Antwort - Dennis Konkol

📧 Hallo ${name}!

Hier ist meine Antwort auf deine Nachricht

💬

Meine Antwort

${originalMessage}

Deine ursprüngliche Nachricht

${originalMessage}

Weitere Fragen?

Falls du weitere Fragen hast oder mehr über meine Projekte erfahren möchtest, zögere nicht, mir zu schreiben!

🌐 Portfolio besuchen 📧 Direkt antworten

Dennis Konkoldki.one

${new Date().toLocaleString('de-DE', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' })}

` } }; export async function POST(request: NextRequest) { try { const body = (await request.json()) as { to: string; name: string; template: 'welcome' | 'project' | 'quick' | 'reply'; originalMessage: string; }; const { to, name, template, originalMessage } = body; console.log('📧 Email response request:', { to, name, template, messageLength: originalMessage.length }); // Validate input if (!to || !name || !template || !originalMessage) { console.error('❌ Validation failed: Missing required fields'); return NextResponse.json( { error: "Alle Felder sind erforderlich" }, { status: 400 }, ); } // Validate email format const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(to)) { console.error('❌ Validation failed: Invalid email format'); return NextResponse.json( { error: "Ungültige E-Mail-Adresse" }, { status: 400 }, ); } // Check if template exists if (!emailTemplates[template]) { console.error('❌ Validation failed: Invalid template'); return NextResponse.json( { error: "Ungültiges Template" }, { status: 400 }, ); } const user = process.env.MY_EMAIL ?? ""; const pass = process.env.MY_PASSWORD ?? ""; if (!user || !pass) { console.error("❌ Missing email/password environment variables"); return NextResponse.json( { error: "E-Mail-Server nicht konfiguriert" }, { status: 500 }, ); } const transportOptions: SMTPTransport.Options = { host: "mail.dk0.dev", port: 587, secure: false, requireTLS: true, auth: { type: "login", user, pass, }, connectionTimeout: 30000, greetingTimeout: 30000, socketTimeout: 60000, tls: { rejectUnauthorized: false, ciphers: 'SSLv3' } }; const transport = nodemailer.createTransport(transportOptions); // Verify transport configuration try { await transport.verify(); console.log('✅ SMTP connection verified successfully'); } catch (verifyError) { console.error('❌ SMTP verification failed:', verifyError); return NextResponse.json( { error: "E-Mail-Server-Verbindung fehlgeschlagen" }, { status: 500 }, ); } const selectedTemplate = emailTemplates[template]; const mailOptions: Mail.Options = { from: `"Dennis Konkol" <${user}>`, to: to, replyTo: "contact@dk0.dev", subject: selectedTemplate.subject, html: selectedTemplate.template(name, originalMessage), text: ` Hallo ${name}! Vielen Dank für deine Nachricht: ${originalMessage} Ich werde mich so schnell wie möglich bei dir melden. Beste Grüße, Dennis Konkol Software Engineer & Student https://dki.one contact@dk0.dev `, }; console.log('📤 Sending templated email...'); const sendMailPromise = () => new Promise((resolve, reject) => { transport.sendMail(mailOptions, function (err, info) { if (!err) { console.log('✅ Templated email sent successfully:', info.response); resolve(info.response); } else { console.error("❌ Error sending templated email:", err); reject(err.message); } }); }); const result = await sendMailPromise(); console.log('🎉 Templated email process completed successfully'); return NextResponse.json({ message: "Template-E-Mail erfolgreich gesendet", template: template, messageId: result }); } catch (err) { console.error("❌ Unexpected error in templated email API:", err); return NextResponse.json({ error: "Fehler beim Senden der Template-E-Mail", details: err instanceof Error ? err.message : 'Unbekannter Fehler' }, { status: 500 }); } }