Integrare email transazionali in Next.js
2026-09-07 · 3 min
L'email transazionale in Next.js è la posta che il prodotto deve inviare: la copia di un form nella tua inbox, un reset password, una ricevuta. Non è una newsletter. Mischiare le due sulla stessa identità SMTP è il modo in cui Gmail inizia a trattare i reset come promozioni.
Che cos'è un'email transazionale in un'app Next.js?
È un messaggio innescato da un'azione utente o da un evento di sistema, verso un destinatario, senza lista marketing. Nell'App Router è quasi sempre un Route Handler (app/api/.../route.ts) che valida il payload, parla con un'API email e risponde 202 o un errore che la UI può mostrare. La API key del provider sta sul server. Una chiave live nel bundle client è un magnete per abusi.
MailingCore è un'API email europea per questo lavoro: SDK JS o REST, template versionati, residenza dei dati nell'UE. Il piano Free è 100 email al mese e 5 template. Puoi chiamarla da una route server Next.js; non incollare una mc_live_ in un Client Component.
Architettura minima
- Una route server che sanifica i campi, controlla l'honeypot e limita per IP.
- Credenziali in variabili d'ambiente (
MAILINGCORE_API_KEY, maiNEXT_PUBLIC_per chiavi live). - Uno slug di template pubblicato per tipo di messaggio (
contact-form,password-reset). - Una chiave di idempotenza sui retry così un doppio click non invia due volte.
- Log nel pannello — non
console.logdell'elenco completo dei destinatari.
Pattern del form di contatto
Valida sul server anche se il form ha già required. Rifiuta gli honeypot che i bot compilano. Poi invia con template così il copy si modifica senza un deploy:
POST /api/contactriceve nome, email, messaggio.- La route chiama
MailingCore.sendTemplate({ slug: "contact-inbox", to: process.env.CONTACT_INBOX, data }). - In opzione un secondo invio di conferma al visitatore.
Se il visitatore deve ricevere una copia, trattala come secondo transazionale, non come BCC del ticket interno. Il BCC è come filtrano indirizzi altrui in un thread.
Reset e ricevute
Usa un dominio From dedicato con SPF, DKIM e DMARC allineati. Disattiva tracking di aperture e clic sulla posta di sicurezza: pixel e link riscritti sembrano bulk. MailingCore documenta trackingDisabled per invio per questo motivo.
Salva i token in hash. Falli scadere. Non loggare l'URL completo di reset.
GDPR per team Next.js nell'UE
Se gli utenti sono nell'UE, il provider email è un responsabile del trattamento. Una region di invio in Irlanda non implica da sola che log e template vivano nell'Unione. Preferisci un vendor che dichiara storage in UE — o accetta SCC e documentale. MailingCore conserva in Europa; la region EU di Resend è un punto di invio con dati account negli USA secondo la policy pubblica. Verifica la documentazione vigente prima di dirlo a un DPO.
Prossimo passo
Prima la route di contatto. Autentica il dominio prima del traffico di produzione. Poi template di auth e billing. Vedi l'avvio rapido e MailingCore vs Resend se la residenza dei dati decide il provider.