Chiarisce la config email del form contatti e usa fallback newsletter.

Messaggio di errore specifico su cosa manca; FROM/TO possono riusare NEWSLETTER_*.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Javaxman
2026-07-29 16:59:28 +02:00
parent 9ac9139b35
commit 6320d8dfdf

View File

@ -115,8 +115,12 @@ export const POST: APIRoute = async ({ request, url }) => {
try { try {
const runtimeEnv = getRuntimeEnv(); const runtimeEnv = getRuntimeEnv();
const mode = readEnv('CONTACT_FORM_MODE', runtimeEnv).toLowerCase() || 'dev'; const mode = readEnv('CONTACT_FORM_MODE', runtimeEnv).toLowerCase() || 'dev';
const fromEmail = readEnv('CONTACT_FORM_FROM_EMAIL', runtimeEnv); const fromEmail =
const toEmail = readEnv('CONTACT_FORM_TO_EMAIL', runtimeEnv); readEnv('CONTACT_FORM_FROM_EMAIL', runtimeEnv) ||
readEnv('NEWSLETTER_FROM_EMAIL', runtimeEnv);
const toEmail =
readEnv('CONTACT_FORM_TO_EMAIL', runtimeEnv) ||
readEnv('NEWSLETTER_NOTIFY_TO_EMAIL', runtimeEnv);
const turnstileSecret = readEnv('CONTACT_TURNSTILE_SECRET_KEY', runtimeEnv); const turnstileSecret = readEnv('CONTACT_TURNSTILE_SECRET_KEY', runtimeEnv);
const form = await request.formData(); const form = await request.formData();
@ -173,9 +177,14 @@ export const POST: APIRoute = async ({ request, url }) => {
if (mode === 'live') { if (mode === 'live') {
const emailBinding = getEmailBinding(runtimeEnv); const emailBinding = getEmailBinding(runtimeEnv);
if (!emailBinding || !fromEmail || !toEmail) { if (!emailBinding || !fromEmail || !toEmail) {
const missing = [
!emailBinding ? 'EMAIL binding' : '',
!fromEmail ? 'CONTACT_FORM_FROM_EMAIL (o NEWSLETTER_FROM_EMAIL)' : '',
!toEmail ? 'CONTACT_FORM_TO_EMAIL (o NEWSLETTER_NOTIFY_TO_EMAIL)' : '',
].filter(Boolean);
return fail( return fail(
request, request,
'Live mode requires EMAIL binding (Cloudflare Email Service), CONTACT_FORM_FROM_EMAIL and CONTACT_FORM_TO_EMAIL.', `Config email incompleta: manca ${missing.join(', ')}. Imposta le variabili runtime del Worker (Settings → Variables and Secrets), non Build.`,
500, 500,
); );
} }