Przejdź do głównej zawartości

Zgodność z EmailJS (@frontmail/emailjs-compat)

@frontmail/emailjs-compat udostępnia te same funkcje i sygnatury co @emailjs/browser, ale komunikuje się z Frontmail. Istniejący kod działa dalej – wystarczy zmienić import i identyfikatory.

Okno terminala
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) oraz init({ publicKey, blockHeadless, blockList, limitRate, storageProvider }), z opcjonalnym drugim argumentem dla originu API (domyślnie https://api.frontmail.dev).
  • send(serviceID, templateID, templateParams?, options?) oraz sendForm(serviceID, templateID, form, options?), gdzie options to ciąg z kluczem publicznym albo obiekt z opcjami.
  • Zwracana wartość to EmailJSResponseStatus ze status (200) i text ('OK'), tak jak w EmailJS, a do tego z dodatkami Frontmail: messageId, deliveryStatus ('queued' lub 'held') i statusToken.
  • Błędy są rzucane jako obiekty EmailJSResponseStatus ze status i text, więc istniejące handlery catch działają. Oryginalny FrontmailError (z code i docsUrl) znajdziesz w error.error.
  • Na api.frontmail.dev istnieją ścieżki REST /api/v1.0/email/send i /api/v1.0/email/send-form z polami treści z EmailJS: service_id, template_id, user_id, template_params, accessToken.
  • Identyfikatory i klucze są z Frontmail: svc_…, tpl_…, pk_…, sk_….
  • Szablony używają składni Frontmail (Handlebars) i typowanych parametrów. Większość szablonów z {{variable}} działa bez zmian; zobacz przewodnik migracji.
  • Gdy skończą ci się kredyty, Frontmail może odpowiedzieć wstrzymaną wiadomością (to nadal sukces). Warstwa zgodności zgłasza ją jako status: 200 z deliveryStatus: 'held'; @frontmail/browser zwraca bezpośrednio status: 'held'.
  • Frontmail automatycznie ponawia błędy sieci i 5xx z kluczem idempotencji.
  • Tłumaczenia szablonów nie są obsługiwane – EmailJS nie ma takiego pojęcia. Pakiet zgodności i ścieżki /api/v1.0/email/… zawsze wysyłają język domyślny szablonu (locale w treści żądania jest ignorowane, a pole formularza fm_locale jest zwykłym parametrem szablonu). Żeby wybrać język, użyj @frontmail/browser z opcją locale.
  • accessToken (klucz prywatny) jest w przeglądarce odrzucany: send / sendForm kończą się status: 400 i error.code === 'private_key_in_browser'. Usuń go z kodu frontendu – zobacz przewodnik migracji. Kod po stronie serwera (Node.js, bez document) nadal może go przekazywać.
  • sendForm pomija pola haseł, pola anty-CSRF popularnych frameworków i zarezerwowane nazwy, takie jak accessToken (zobacz sendForm).
  • blockHeadless, blockList i limitRate działają w przeglądarce i służą wygodzie, a nie bezpieczeństwu – limity egzekwuj w sekcji Bezpieczeństwo w panelu.

Kiedy przyjdzie pora, przejście na @frontmail/browser albo SDK dla frameworka jest proste i daje ci typowane wyniki, typowane parametry i getStatus.