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.
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: 'Jana' });emailjs.sendForm('svc_01J9…', 'tpl_01J9…', '#contact-form');Co jest zgodne
Dział zatytułowany „Co jest zgodne”init(publicKey)orazinit({ publicKey, blockHeadless, blockList, limitRate, storageProvider }), z opcjonalnym drugim argumentem dla originu API (domyślniehttps://api.frontmail.dev).send(serviceID, templateID, templateParams?, options?)orazsendForm(serviceID, templateID, form, options?), gdzieoptionsto ciąg z kluczem publicznym albo obiekt z opcjami.- Zwracana wartość to
EmailJSResponseStatuszestatus(200) itext('OK'), tak jak w EmailJS, a do tego z dodatkami Frontmail:messageId,deliveryStatus('queued'lub'held') istatusToken. - Błędy są rzucane jako obiekty
EmailJSResponseStatuszestatusitext, więc istniejące handlerycatchdziałają. OryginalnyFrontmailError(zcodeidocsUrl) znajdziesz werror.error. - Na
api.frontmail.devistnieją ścieżki REST/api/v1.0/email/sendi/api/v1.0/email/send-formz polami treści z EmailJS:service_id,template_id,user_id,template_params,accessToken.
Co działa inaczej
Dział zatytułowany „Co działa inaczej”- 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: 200zdeliveryStatus: 'held';@frontmail/browserzwraca bezpośredniostatus: '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 (localew treści żądania jest ignorowane, a pole formularzafm_localejest zwykłym parametrem szablonu). Żeby wybrać język, użyj@frontmail/browserz opcjąlocale. accessToken(klucz prywatny) jest w przeglądarce odrzucany:send/sendFormkończą sięstatus: 400ierror.code === 'private_key_in_browser'. Usuń go z kodu frontendu – zobacz przewodnik migracji. Kod po stronie serwera (Node.js, bezdocument) nadal może go przekazywać.sendFormpomija pola haseł, pola anty-CSRF popularnych frameworków i zarezerwowane nazwy, takie jakaccessToken(zobacz sendForm).blockHeadless,blockListilimitRatedział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.