import type { APIRoute } from 'astro'; import { testMail, sendMail, mailLayout, istMail } from '../../../lib/mail'; export const prerender = false; const json = (b: unknown, s = 200) => new Response(JSON.stringify(b), { status: s, headers: { 'Content-Type': 'application/json' } }); /** * Ohne `to`: nur die Verbindung prüfen (verschickt nichts). * Mit `to`: eine echte Testnachricht schicken — erst das beweist, dass die * Mail auch ankommt und nicht im Spam landet. */ export const POST: APIRoute = async ({ request }) => { const b = await request.json().catch(() => ({})); const to = String(b.to || '').trim(); if (!to) return json(await testMail()); if (!istMail(to)) return json({ ok: false, message: 'Das ist keine gültige Adresse.' }, 400); try { await sendMail({ to, subject: 'Klarbild — Testnachricht', text: 'Wenn du das liest, funktioniert der E-Mail-Versand aus Klarbild.\n\n' + 'Damit können jetzt: Passwort-Rücksetzungen, Hinweise zu fertigen Aufträgen und Teilen-Links per Mail.', html: mailLayout('Der Versand funktioniert', [ 'Wenn du das liest, kommen E-Mails aus deiner Klarbild-Installation an.', 'Damit funktionieren jetzt: Passwort zurücksetzen, Hinweise zu fertigen Aufträgen und Teilen-Links per Mail.', ]), }); return json({ ok: true, message: `Testnachricht an ${to} verschickt. Schau auch im Spam-Ordner nach.` }); } catch (e: any) { console.error('[test-mail]', e?.message || e); return json({ ok: false, message: 'Versand fehlgeschlagen — Zugangsdaten und Port prüfen.' }); } };