Migrare da EmailJS
Frontmail è stato progettato perché il passaggio da EmailJS richieda pochi minuti: l’SDK per browser ha le stesse firme delle funzioni, l’API REST accetta gli stessi campi e, per i modelli semplici, la sintassi è compatibile.
Passo dopo passo
Sezione intitolata “Passo dopo passo”1. Crea l’organizzazione e collega il servizio
Sezione intitolata “1. Crea l’organizzazione e collega il servizio”Registrati su app.frontmail.dev e collega lo stesso provider email che usi in EmailJS (vedi Servizi). Se usavi un servizio Gmail o Outlook, ricollegalo tramite OAuth; per i provider SMTP o API inserisci le stesse credenziali.
2. Ricrea i modelli
Sezione intitolata “2. Ricrea i modelli”Crea un modello per ogni modello di EmailJS. Copia oggetto, To, From, Reply-To e contenuto. Poi clicca su Rileva dal modello e imposta tipi e obbligatorietà dei parametri – le differenze sono descritte più sotto in Sintassi dei modelli.
3. Associa chiavi e ID
Sezione intitolata “3. Associa chiavi e ID”| EmailJS | Frontmail | Dove trovarlo |
|---|---|---|
Public Key (user_id) |
Chiave pubblica pk_… |
Sicurezza → Chiave pubblica |
Private Key (accessToken) |
Chiave privata sk_… – solo per il server |
Sicurezza → Chiavi private (mostrata una sola volta) |
| Service ID | ID servizio svc_… |
Servizi email |
| Template ID | ID modello tpl_… |
Modelli |
| Domain allowlist | Siti consentiti | Sicurezza → Siti consentiti |
| reCAPTCHA | Cloudflare Turnstile con il tuo widget gratuito | Chiavi in Sicurezza → Protezione dai bot (Turnstile), per ogni modello Impostazioni → Protezione → Richiedi CAPTCHA (Turnstile) |
4. Cambia l’import
Sezione intitolata “4. Cambia l’import”import emailjs from '@emailjs/browser';import emailjs from '@frontmail/emailjs-compat';Le tue chiamate emailjs.init(), emailjs.send() ed emailjs.sendForm() continuano a funzionare –
cambiano solo gli ID e la chiave. Vedi Compatibilità con EmailJS.
Usi lo script dalla CDN? Sostituisci lo <script> di EmailJS con la build compat, che espone lo
stesso oggetto globale emailjs, così le tue chiamate restano invariate:
<script src="https://cdn.jsdelivr.net/npm/@frontmail/emailjs-compat@0.1.0/dist/emailjs-compat.umd.js" integrity="sha384-RH+fuNzBqTKgxDJBHRmWfOn37fs33L+Or1ujDV7wThynx9FxD9uPptLu80LpCrEc" crossorigin="anonymous"></script>Fissa la versione esatta e mantieni l’attributo integrity – vedi
Fissa la versione per sapere
dove trovare l’hash delle versioni più recenti.
In alternativa, carica l’SDK nativo (@frontmail/browser, con la stessa versione fissata) e rinomina
le chiamate emailjs. in frontmail. – gli argomenti sono gli stessi, ma la promise si risolve con
status: 'queued' o 'held' invece di 200.
Chiami direttamente l’API REST? Cambia l’host in https://api.frontmail.dev. I percorsi
/api/v1.0/email/send e /api/v1.0/email/send-form e i campi del corpo restano gli stessi.
5. Turnstile al posto di reCAPTCHA
Sezione intitolata “5. Turnstile al posto di reCAPTCHA”Se i tuoi modelli usavano reCAPTCHA, rimuovi il widget reCAPTCHA e aggiungi Turnstile. Proprio come
con reCAPTCHA, usi chiavi del tuo account: crea un widget Turnstile gratuito in Cloudflare, incolla le
sue chiavi in Sicurezza → Protezione dai bot (Turnstile) e clicca su Attiva il CAPTCHA per
tutti i modelli; da quel momento i nuovi modelli lo richiedono per impostazione predefinita. Metti
nel modulo il widget con la tua chiave del sito – vedi Turnstile. Il campo
g-recaptcha-response non viene usato.
6. Prova e fai il passaggio
Sezione intitolata “6. Prova e fai il passaggio”Invia una prova dall’editor dei modelli, pubblica e tieni d’occhio Cronologia. Mantieni il tuo account EmailJS finché non hai visto passare del traffico reale.
7. Facoltativo: passa all’SDK nativo
Sezione intitolata “7. Facoltativo: passa all’SDK nativo”@frontmail/browser o un SDK per framework ti danno parametri tipizzati, lo stato held,
getStatus() ed errori tipizzati.
Sintassi dei modelli
Sezione intitolata “Sintassi dei modelli”Frontmail usa Handlebars; EmailJS usa una sintassi simile a Mustache. I casi più comuni:
| EmailJS | Frontmail | Note |
|---|---|---|
{{name}} |
{{name}} |
Uguale. In Frontmail sempre con escaping HTML. |
{{{html_content}}} |
{{html_content}} con parametro di tipo html |
In Frontmail le triple graffe non disattivano l’escaping; usa il tipo html ripulito. |
Sezioni in stile {{#if}} dal Mustache {{#name}}…{{/name}} |
{{#if name}}…{{/if}} |
Usa blocchi Handlebars espliciti. |
Sezione invertita di Mustache {{^name}}…{{/name}} |
{{#unless name}}…{{/unless}} |
|
| Elenchi tramite sezioni | {{#each items}}…{{/each}} con un parametro list |
Definisci itemFields per la validazione. |
| – | {{formatDate}}, {{formatMoney}}, {{eq}}… |
Helper aggiuntivi. |
I valori predefiniti impostati nei campi dei modelli EmailJS corrispondono al default del parametro
in Frontmail.
Confronto
Sezione intitolata “Confronto”Un confronto oggettivo delle funzionalità rilevanti per la migrazione, aggiornato a settembre 2026. Prezzi e limiti di entrambi i servizi cambiano nel tempo – prima di decidere controlla le pagine dei rispettivi fornitori.
| EmailJS | Frontmail | |
|---|---|---|
| Quando la quota mensile è esaurita | Le richieste vengono rifiutate fino al periodo successivo o a un upgrade | I messaggi vengono messi in attesa e inviati automaticamente quando aggiungi crediti; scoperto e ricarica automatica facoltativi |
| Pacchetti di crediti prepagati con validità | Non disponibili | Pacchetti da 5k / 25k / 100k validi 3–12 mesi, con ogni piano |
| Rate limit dell’API REST | 1 richiesta al secondo | 2–50 richieste al secondo a seconda del piano, più /v1/send-batch |
| Linguaggio dei modelli | Variabili con sezioni semplici | Handlebars con condizioni, cicli, helper e parametri tipizzati e validati |
| CAPTCHA | reCAPTCHA v2 | Cloudflare Turnstile, attivabile per tutti i modelli con un clic |
| Failover del provider | Non disponibile | Servizio di riserva per ogni modello, controlli di stato giornalieri |
| Tracciamento della consegna | Non disponibile | Recapitata / non recapitata / segnalata / aperta / cliccata tramite i webhook del provider |
| Nuovi tentativi e idempotenza nell’SDK | Non documentati | Nuovi tentativi automatici con chiavi di idempotenza |
| SDK per framework | SDK per browser, SDK per React Native | Browser, React, React Native, Vue, Svelte, Node, compatibile con EmailJS |
Se trovi un’affermazione non più aggiornata, scrivici a support@frontmail.dev e la correggeremo.