MJML vs React Email: Linguaggio di Markup vs Libreria di Componenti

Due approcci per sviluppatori alle email HTML: uno basato su markup dedicato, l'altro su componenti React.

Per un team che scrive già React e TypeScript, la scelta più coerente è React Email: i template diventano componenti nello stesso repository, usano gli stessi tipi e si testano con gli stessi strumenti del resto dell'applicazione. Per tutti gli altri, MJML è la scelta più prudente, perché la sintassi non dipende dal linguaggio del backend e il framework è self-hosted, quindi non c'è un abbonamento da pagare per la libreria. Il costo vero, in entrambi i casi, è l'invio: con Resend il piano Free copre 3.000 email al mese, mentre il piano Pro parte da 20 $ al mese per 50.000 email.

Due modi di scrivere la stessa email

MJML e React Email risolvono lo stesso problema: scrivere una email in un formato più semplice dell'HTML delle tabelle annidate e ottenere un output che funzioni nei client di posta. La differenza sta in dove vive la logica. In MJML la struttura è dichiarata con tag propri, simili a XML, e il compilatore la trasforma in HTML. In React Email la struttura è una funzione JavaScript che restituisce componenti, quindi puoi usare variabili, condizioni, cicli e tipi come in qualsiasi altro componente.

Questa differenza ha conseguenze pratiche. Un template MJML è leggibile da chiunque conosca il formato, anche da una persona che non scrive JavaScript. Un template React Email può essere riutilizzato dall'applicazione, può ricevere dati tipizzati e può essere testato con gli stessi runner usati per i componenti dell'interfaccia. Il prezzo di questa potenza è una dipendenza in più nel progetto: React Email ha senso quando questa dipendenza c'è già.

Confronto rapido degli strumenti

La tabella seguente mette a confronto i due framework e i provider di invio che più spesso si abbinano a essi. I prezzi sono quelli indicati sulle pagine ufficiali dei fornitori, controllate il 7 ottobre 2026. Dove una pagina non indica un prezzo per un piano, la cella lo dice esplicitamente.

Strumento Ideale per Prezzo di partenza (piano e fatturazione) Limite principale
MJML Team con backend non JavaScript o con designer che lavorano sul markup Nessun abbonamento: modello self-hosted. Il costo è l'infrastruttura di build Una sintassi propria da imparare e meno integrazione con i componenti applicativi
React Email Team che lavora già con React e TypeScript Prezzo su richiesta per le funzioni enterprise. Il costo reale è il provider di invio Richiede uno stack React e un processo di build dei template
Resend (invio) Sviluppatori che inviano email transazionali e, con piani dedicati, marketing Free: 3.000 email/mese. Pro: 20 $/mese per 50.000 email/mese Il piano Free è limitato a 100 email al giorno
Mailjet (invio) Team che vuole un piano gratuito generoso e un invio semplice Free: 6.000 email/mese. Essential: 19 $/mese per 15.000 email/mese con contatti illimitati Il tetto mensile sale a salti, e il piano Free ha un limite giornaliero di 200 email
Vero (automazione) Team che collega dati utente, eventi e email in un flusso unico Starter: 54 $/mese per 5.000 profili. Professional: su preventivo Il piano Professional non ha un prezzo pubblicato

Approccio MJML

MJML fornisce un linguaggio di markup specifico per le email. Componenti come mj-section, mj-column e mj-button si traducono in strutture HTML che tengono conto delle differenze tra client. Non devi ricordare quali tabelle annidare o quali attributi Outlook richiede: il compilatore lo fa per te.

<mjml>
  <mj-body>
    <mj-section>
      <mj-column>
        <mj-text font-size="18px">Welcome!</mj-text>
        <mj-button background-color="#007bff">
          Get Started
        </mj-button>
      </mj-column>
    </mj-section>
  </mj-body>
</mjml>

Il punto di forza di MJML, per chi lavora con un team misto, è la portabilità. Il template è un file di testo che qualunque servizio di build può compilare, indipendentemente dal linguaggio del backend. Un'applicazione in Python, Ruby, PHP o Go può generare l'HTML tramite il compilatore a riga di comando o tramite un passaggio di build separato, senza importare React.

Il limite principale è che MJML è un linguaggio a sé. Chi arriva da HTML o da un altro sistema di template deve impararne i componenti, e la logica dinamica va ancora gestita nel backend o con un motore di template esterno. Gli strumenti di editing sono maturi, ma l'integrazione con i tipi e con i componenti dell'applicazione è più limitata rispetto a React Email.

Dal punto di vista del costo, il framework non ha un piano a pagamento da sottoscrivere: il modello è self-hosted. Il conto da fare è quindi quello dell'infrastruttura di build e del servizio di invio. Per l'indirizzo ufficiale delle condizioni, consulta la pagina prezzi di MJML.

Approccio React Email

React Email ti permette di scrivere le email come componenti React. Se il tuo team pensa già in termini di componenti, props e JSX, il modello mentale è immediato: un template è una funzione che riceve dati e restituisce un albero di componenti, esattamente come una pagina dell'applicazione.

import { Html, Text, Button } from '@react-email/components';

export default function WelcomeEmail({ name }) {
  return (
    <Html>
      <Text style={{ fontSize: '18px' }}>Welcome, {name}!</Text>
      <Button
        href="https://app.example.com"
        style={{ backgroundColor: '#007bff' }}
      >
        Get Started
      </Button>
    </Html>
  );
}

Il vantaggio concreto è la condivisione. Il tipo dei dati che il template riceve può essere lo stesso tipo usato dal servizio che genera l'email. Un cambio di nome di campo viene segnalato dal compilatore, non scoperto in produzione. Gli stili possono essere costanti condivise, e i componenti di intestazione o di piè di pagina possono essere riutilizzati tra più email.

Il limite principale è la dipendenza. React Email richiede un ambiente React per costruire i template, quindi anche un piccolo team che scrive solo email deve mantenere uno stack JavaScript. L'ecosistema è più giovane di quello di MJML: ci sono meno esempi già pronti e meno risposte nelle community su casi limite. React Email è sviluppato da Resend, e la sua roadmap segue i cambiamenti di quel prodotto.

Sul prezzo, la pagina di questo confronto non riporta un listino del framework: per le condizioni aggiornate consulta direttamente il sito ufficiale di React Email. Il costo ricorrente che incide davvero sul budget è quello dell'invio, che dipende dal provider scelto.

Costo reale: framework e invio

Il framework è solo una parte della spesa. Per capire quanto costa davvero una scelta, bisogna guardare il servizio che spedisce le email. Qui sotto trovi tre dimensioni di lista realistiche, con i piani che rientrano in ciascuna fascia. I prezzi sono in dollari USA e si riferiscono alle pagine ufficiali controllate il 7 ottobre 2026. Dove il piano non è indicato, la cella rimanda alla pagina prezzi del fornitore.

Costo per dimensione della lista

Contatti Resend (piano marketing) Mailjet Vero
1.000 Free: 0 $/mese (1.000 contatti, invii broadcast illimitati) Free: 0 $/mese (1.000 contatti, 6.000 email/mese) Starter: 54 $/mese (fino a 5.000 profili)
5.000 Pro: 40 $/mese Essential: 19 $/mese, se il volume di invio resta entro 15.000 email/mese Starter: 54 $/mese
10.000 Pro: 80 $/mese Essential: 19 $/mese, con il volume entro 15.000 email/mese Professional: su preventivo
25.000 Pro: 180 $/mese Piano su richiesta: vedi la pagina prezzi Professional: su preventivo
50.000 Pro: 250 $/mese Piano su richiesta: vedi la pagina prezzi Professional: su preventivo

Questa tabella mostra un punto che spesso sfugge: il costo cresce con i contatti nei piani marketing di Resend, mentre nel piano Essential di Mailjet i contatti sono illimitati e il limite è il volume di invio. Per questo la scelta del provider deve partire dal modo in cui invii, non solo dalla dimensione della lista.

Costo per volume di invio

Email al mese Resend Mailjet Nota
3.000 Free: 0 $/mese (limite di 100 al giorno) Free: 0 $/mese (limite di 200 al giorno) Entrambi gratuiti; il limite giornaliero conta più del mensile per le campagne
15.000 Pro: 20 $/mese (50.000 email incluse) Essential: 19 $/mese (15.000 email, contatti illimitati) Mailjet costa poco meno con questo volume
50.000 Pro: 20 $/mese (50.000 email incluse) Piano superiore: vedi la pagina prezzi Il piano Pro di Resend copre questo volume con un solo abbonamento
100.000 Scale: 90 $/mese (100.000 email incluse) Piano su richiesta: vedi la pagina prezzi Confronta sempre il piano sul volume previsto per i prossimi due trimestri

Per calcolare il costo annuale, moltiplica il prezzo mensile per dodici. Con il piano Pro di Resend a 20 $ al mese, il costo annuale è 12 × 20 $ = 240 $. Con il piano Essential di Mailjet a 19 $ al mese, il costo annuale è 12 × 19 $ = 228 $. La differenza è piccola, quindi nella scelta del provider contano di più la qualità dell'invio, la gestione dei bounce e la reputazione del dominio.

Come cambia il lavoro quotidiano

Le funzionalità si confrontano facilmente, ma il lavoro di ogni giorno si distingue soprattutto nel modo in cui un template viene modificato, verificato e consegnato. Con MJML, il ciclo tipico è modificare il file, compilarlo e aprire l'HTML risultante in un'anteprima. Chi non è sviluppatore può intervenire sul testo e sulla struttura senza toccare la logica, purché il template sia già stato impostato.

Con React Email, il ciclo tipico passa dal server di sviluppo, che mostra l'anteprima mentre modifichi il componente. Le modifiche ai dati di prova sono immediate, e le modifiche ai componenti condivisi si propagano a tutti i template che li usano. Il rovescio della medaglia è che un designer senza esperienza di React ha bisogno di un passaggio in più per modificare un template.

In entrambi i casi, il controllo finale richiede test su client reali. Nessun framework elimina la necessità di inviare una bozza a una casella di prova e di guardarla su Gmail, Outlook e sui client mobili più usati dal pubblico. Il tempo risparmiato dalla sintassi va reinvestito in questo controllo, non nel rifarlo a mano.

Come scegliere

La scelta migliore dipende da tre domande: quale linguaggio usa già il backend, chi modifica i template e quanto è importante riusare dati e componenti dell'applicazione. La tabella seguente riassume i casi più comuni.

Se la situazione è Scegli Perché
Frontend e backend in React o Node.js, template nello stesso repository React Email Componenti, tipi e test condivisi con il resto dell'applicazione
Backend in Python, Ruby, PHP o Go MJML La sintassi è indipendente dal linguaggio; il compilatore si lancia da riga di comando o da un passaggio di build
Il team non usa React e non vuole introdurlo solo per le email MJML Evita una dipendenza nuova e un ambiente di build aggiuntivo
Più persone non tecniche modificano i testi e la struttura MJML Il formato è dichiarativo e leggibile anche senza JavaScript
Molte email condividono intestazioni, piè di pagina e componenti di marca React Email Un componente condiviso si aggiorna in un solo punto e si propaga a tutti i template
Budget minimo e volume basso MJML con il piano Free del provider scelto Nessun abbonamento per il framework; il piano Free di Resend o Mailjet copre il primo periodo

Un criterio pratico: se la risposta alla prima domanda è React, scegli React Email. Se la risposta è un altro linguaggio, MJML è quasi sempre la scelta più semplice da mantenere. Il caso in cui la decisione è più difficile è quello di un team React con pochi sviluppatori e molti template, perché lì la condivisione dei componenti vale il costo della dipendenza, ma serve una persona responsabile della libreria.

Checklist di avvio o migrazione

Che tu scelga l'uno o l'altro, il percorso di avvio segue sempre gli stessi passi: installare il framework, creare un primo template, compilarlo, testarlo sui client e collegarlo al provider. La tabella indica le differenze operative tra i due.

Passo MJML React Email
1. Installazione Installa il pacchetto mjml come dipendenza di build o usa il compilatore a riga di comando Installa react-email e @react-email/components nel progetto React
2. Primo template Usa mj-section, mj-column e mj-text in un file dedicato Crea un componente che usa Html, Text e Button e riceve i dati come props
3. Anteprima Compila il file e apri l'HTML risultante nel browser Avvia il server di sviluppo per vedere l'anteprima mentre modifichi
4. Test sui client Invia la bozza a un set di caselle di prova su Gmail, Outlook e mobile Invia la bozza a un set di caselle di prova su Gmail, Outlook e mobile
5. Invio Consegna l'HTML compilato al provider tramite API o pannello Genera l'HTML con il rendering del componente e invialo tramite l'SDK o l'API del provider

Per la migrazione da un framework all'altro, non esiste uno script che converta un template in modo affidabile. La strategia più sicura è riscrivere un template alla volta, cominciando da quello con più traffico o da quello più semplice, e confrontare il risultato sui client prima di spegnere il vecchio. Conserva il vecchio HTML come riferimento per almeno un ciclo di invii, così puoi tornare indietro senza fretta se emerge un problema di rendering.

Qualità di rendering e client email

Entrambi i framework producono HTML compatibile con i client principali. MJML ha un'esperienza più lunga con i casi limite dei client vecchi, perché i suoi componenti nascono proprio per coprire quelle differenze. React Email gestisce bene i client più diffusi, ma i template scritti con stili non supportati da Outlook richiedono più attenzione, e conviene verificare il risultato con i propri dati reali e non solo con l'anteprima.

Per email transazionali critiche, come conferme d'acquisto o reset della password, la maturità di MJML offre una base di rendering molto consolidata. Per email di marketing con grafica complessa, entrambi richiedono un controllo manuale su Outlook prima dell'invio. In nessun caso il framework sostituisce la verifica finale.

Il verdetto

Scegli MJML se il backend non usa JavaScript, se più persone modificano i template e se vuoi uno strumento con un'esperienza lunga sui client email. Il costo del framework è zero, e il lavoro di manutenzione resta leggero.

Scegli React Email se il tuo stack è già basato su React e vuoi che le email condividano tipi, componenti e test con l'applicazione. La scelta ha senso solo se qualcuno nel team è responsabile della libreria dei template.

In entrambi i casi, il costo ricorrente sarà quello dell'invio. Confronta i piani sul volume previsto per i prossimi due trimestri, non sul volume di oggi, e tieni d'occhio i limiti giornalieri dei piani gratuiti, che nelle campagne contano più del tetto mensile.

I prezzi citati provengono dalle pagine ufficiali di ciascun fornitore, controllate il 7 ottobre 2026. Piani e limiti cambiano spesso: prima di sottoscrivere, controlla di nuovo la pagina ufficiale del fornitore.

Domande frequenti

Posso usare MJML e React Email nello stesso progetto?

Sì, ma va fatto con una ragione precisa. Mantenere due sistemi di template significa due sintassi, due processi di build e due set di test. Di solito conviene scegliere uno solo e usarlo per tutte le email del prodotto.

MJML ha un costo di abbonamento?

Il framework è self-hosted e nella pagina dei prezzi ufficiale non risulta un piano a pagamento da sottoscrivere. Il costo reale dipende dall'infrastruttura che usi per compilare i template e, soprattutto, dal servizio di invio che scegli. Controlla sempre la pagina ufficiale su mjml.io/pricing prima di decidere.

React Email funziona senza React nel backend?

I template sono componenti React, quindi servono Node.js o un ambiente JavaScript per compilarli in HTML. Il backend che invia le email può essere qualunque cosa, perché l'output finale è HTML statico. In pratica, però, il vantaggio maggiore di React Email si perde se il resto dell'applicazione non usa React.

Quale piano gratuito di invio conviene abbinare a questi framework?

Dipende dal volume. Resend include 3.000 email al mese nel piano Free, con un limite di 100 al giorno. Mailjet include 6.000 email al mese con un limite di 200 al giorno e fino a 1.000 contatti. Entrambi i prezzi sono indicati sulle rispettive pagine ufficiali.

Quanto contano i client email vecchi nella scelta?

Contano più dello strumento in sé. Entrambi i framework producono HTML compatibile con i client principali, ma Outlook per Windows con il motore Word resta il caso più delicato. Qualunque scelta richiede un test su un set di client reali prima del lancio di un template transazionale importante.

Conviene migrare da MJML a React Email, o viceversa?

Solo se il motivo è concreto, per esempio l'arrivo di nuovi sviluppatori che lavorano già in React. Il lavoro di migrazione non cambia il risultato finale, che è sempre HTML, ma richiede di riscrivere ogni template e di ripetere i test di rendering su tutti i client usati dal pubblico.

Un builder visuale sostituisce uno di questi due framework?

Per un team senza sviluppatori dedicati, un builder visuale può essere più adatto. Questa pagina però confronta solo MJML e React Email, quindi non valuta i builder visuali. Se la scelta è tra codice e interfaccia grafica, conviene partire da una prova concreta con i template più usati.