Compatibilità con EmailJS (@frontmail/emailjs-compat)
@frontmail/emailjs-compat espone le stesse funzioni e firme di @emailjs/browser, ma comunica con
Frontmail. Il codice esistente continua a funzionare dopo aver cambiato l’import e gli ID.
npm uninstall @emailjs/browsernpm install @frontmail/emailjs-compatimport emailjs from '@emailjs/browser';import emailjs from '@frontmail/emailjs-compat';
emailjs.init({ publicKey: 'pk_4f2a…' });emailjs.send('svc_01J9…', 'tpl_01J9…', { name: 'Giulia' });emailjs.sendForm('svc_01J9…', 'tpl_01J9…', '#contact-form');Cosa è compatibile
Sezione intitolata “Cosa è compatibile”init(publicKey)einit({ publicKey, blockHeadless, blockList, limitRate, storageProvider }), con un secondo argomento facoltativo per l’origine dell’API (predefinitahttps://api.frontmail.dev).send(serviceID, templateID, templateParams?, options?)esendForm(serviceID, templateID, form, options?), conoptionscome stringa della chiave pubblica o come oggetto di opzioni.- Il valore risolto è un
EmailJSResponseStatusconstatus(200) etext('OK'), come in EmailJS, più alcuni extra di Frontmail:messageId,deliveryStatus('queued'o'held') estatusToken. - Gli errori vengono lanciati come oggetti
EmailJSResponseStatusconstatusetext, quindi i gestoricatchesistenti funzionano. IlFrontmailErrorsottostante (concodeedocsUrl) si trova inerror.error. - I percorsi REST
/api/v1.0/email/sende/api/v1.0/email/send-formesistono suapi.frontmail.dev, con i campi del body di EmailJSservice_id,template_id,user_id,template_params,accessToken.
Cosa cambia
Sezione intitolata “Cosa cambia”- ID e chiavi sono quelli di Frontmail:
svc_…,tpl_…,pk_…,sk_…. - I modelli usano la sintassi di Frontmail (Handlebars) e parametri tipizzati. La maggior parte dei
modelli con
{{variable}}funziona senza modifiche; vedi la guida alla migrazione. - Frontmail può risolvere con un messaggio in attesa quando hai finito i crediti (è comunque un
successo). Il livello di compatibilità lo riporta come
status: 200condeliveryStatus: 'held';@frontmail/browserrestituisce direttamentestatus: 'held'. - Frontmail ripete automaticamente gli errori di rete e i 5xx con una chiave di idempotenza.
- Le traduzioni dei modelli non sono supportate – EmailJS non ha questo concetto. Il pacchetto di
compatibilità e le route
/api/v1.0/email/…inviano sempre la lingua predefinita del modello (unlocalenel body viene ignorato, un campo del modulofm_localeè un normale parametro del modello). Usa@frontmail/browsercon l’opzionelocaleper scegliere una lingua. accessToken(una chiave privata) viene rifiutato nel browser:send/sendFormvengono rifiutati constatus: 400ederror.code === 'private_key_in_browser'. Rimuovilo dal codice frontend – vedi la guida alla migrazione. Il codice lato server (Node.js, senzadocument) può ancora passarlo.sendFormsalta i campi password, i campi anti-CSRF dei framework più comuni e i nomi riservati comeaccessToken(vedi sendForm).blockHeadless,blockListelimitRatevengono eseguiti nel browser e sono una comodità, non un controllo di sicurezza – applica i limiti in Sicurezza nella dashboard.
Quando sei pronto, passare a @frontmail/browser o a un SDK per framework è
semplice e ti offre risultati tipizzati, parametri tipizzati e getStatus.