Přeskočit na obsah

Kompatibilita s EmailJS (@frontmail/emailjs-compat)

@frontmail/emailjs-compat nabízí stejné funkce a signatury jako @emailjs/browser, jen komunikuje s Frontmailem. Stávající kód funguje dál, stačí změnit import a ID.

Terminál
npm uninstall @emailjs/browser
npm install @frontmail/emailjs-compat
import emailjs from '@emailjs/browser';
import emailjs from '@frontmail/emailjs-compat';
emailjs.init({ publicKey: 'pk_4f2a…' });
emailjs.send('svc_01J9…', 'tpl_01J9…', { name: 'Jana' });
emailjs.sendForm('svc_01J9…', 'tpl_01J9…', '#contact-form');
  • init(publicKey) a init({ publicKey, blockHeadless, blockList, limitRate, storageProvider }), s volitelným druhým argumentem pro origin API (výchozí https://api.frontmail.dev).
  • send(serviceID, templateID, templateParams?, options?) a sendForm(serviceID, templateID, form, options?), kde options je řetězec s public key, nebo objekt s volbami.
  • Výsledná hodnota je EmailJSResponseStatus se status (200) a text ('OK'), stejně jako v EmailJS, a navíc s údaji Frontmailu: messageId, deliveryStatus ('queued' nebo 'held') a statusToken.
  • Chyby se vyhazují jako objekty EmailJSResponseStatus se status a text, takže stávající catch handlery fungují. Původní FrontmailError (s code a docsUrl) najdete v error.error.
  • Na api.frontmail.dev existují REST cesty /api/v1.0/email/send a /api/v1.0/email/send-form s poli těla z EmailJS: service_id, template_id, user_id, template_params, accessToken.
  • ID a klíče jsou frontmailovské: svc_…, tpl_…, pk_…, sk_….
  • Šablony používají syntaxi Frontmailu (Handlebars) a typované parametry. Většina šablon s {{variable}} funguje beze změny; viz průvodce migrací.
  • Když vám dojdou kredity, Frontmail může odpovědět zadrženou zprávou (pořád jde o úspěch). Kompatibilní vrstva ji hlásí jako status: 200 s deliveryStatus: 'held'; @frontmail/browser vrací rovnou status: 'held'.
  • Frontmail automaticky opakuje síťové chyby a 5xx s idempotency klíčem.
  • accessToken (soukromý klíč) se v prohlížeči odmítne: send / sendForm skončí se status: 400 a error.code === 'private_key_in_browser'. Z kódu pro frontend ho odstraňte – viz průvodce migrací. Kód na serveru (Node.js, bez document) ho předávat může.
  • sendForm přeskočí pole s heslem, anti-CSRF pole běžných frameworků a rezervované názvy jako accessToken (viz sendForm).
  • blockHeadless, blockList a limitRate běží v prohlížeči a slouží pro pohodlí, ne jako zabezpečení – limity nastavte v sekci Zabezpečení v dashboardu.

Až budete připraveni, přechod na @frontmail/browser nebo SDK pro framework je jednoduchý a získáte typované výsledky, typované parametry a getStatus.