// app/api/submit/route.js import nodemailer from 'nodemailer'; export async function POST(request) { try { const formData = await request.formData(); // 1. Extract form data (Matching your PHP POST variables) const turnstileToken = formData.get('cf-turnstile-response'); const email = formData.get('email'); const name = formData.get('name'); const team = formData.get('team'); const tel = formData.get('tel'); const count = formData.get('count'); const level = formData.get('level'); const message = formData.get('message'); const honeypot = formData.get('website'); // 2. Security Checks (Honeypot & Turnstile) if (honeypot) { return Response.json({ success: false, message: 'Spam detekterat.' }, { status: 400 }); } // Verify Turnstile const turnstileRes = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ secret: process.env.TURNSTILE_SECRET || '', // Pulls from .env.local response: turnstileToken?.toString() || '', }), }); const turnstileData = await turnstileRes.json(); if (!turnstileData.success) { return Response.json({ success: false, message: 'Säkerhetsverifiering misslyckades (Turnstile).' }, { status: 400 }); } let formattedTel = tel.replace(/\D/g, ''); if (formattedTel.startsWith('46')) formattedTel = formattedTel.substring(2); else if (formattedTel.startsWith('0')) formattedTel = formattedTel.substring(1); if (formattedTel.length === 9) { formattedTel = `+46 (0)${formattedTel.substring(0, 2)}-${formattedTel.substring(2, 5)} ${formattedTel.substring(5, 7)} ${formattedTel.substring(7, 9)}`; } else { formattedTel = tel; } // 4. Send Email via Nodemailer (Replicating PHPMailer) const transporter = nodemailer.createTransport({ host: '10.10.0.113', // Your internal SMTP Host port: 25, secure: false, tls: { rejectUnauthorized: false } }); const cleanMessage = message ? message.replace(/[\r\n;]/g, " ") : ""; const dateStr = new Date().toISOString().replace('T', ' ').substring(0, 19); const emailHtml = `
| Lagnamn: | ${team} |
| Kontakt: | ${name} |
| E-post: | ${email} |
| Telefon: | ${formattedTel} |
| Spelare: | ${count} |
| Nivå: | ${level} |
Meddelande:
${message ? message.replace(/\n/g, '
') : ''}
| ${team} | ${count} | ${level} | ${name} | ${formattedTel} | ${email} | ${dateStr} | ${cleanMessage} |
Tack för din anmälan vi återkommer så fort vi kan.
Med vänliga hälsningar,
Lerbergets Volleybollsällskap