Przejdź do głównej zawartości

Migracja z EmailJS

Frontmail jest zaprojektowany tak, żeby przejście z EmailJS zajęło kilka minut: SDK dla przeglądarki ma te same sygnatury funkcji, REST API przyjmuje te same pola, a składnia szablonów jest zgodna w przypadku prostych szablonów.

Załóż konto na app.frontmail.dev i podłącz tego samego dostawcę poczty, którego używasz w EmailJS (zobacz Usługi). Jeśli używałeś usługi Gmail albo Outlook, połącz ją ponownie przez OAuth; w przypadku SMTP albo dostawców z API wpisz te same dane dostępowe.

Dla każdego szablonu z EmailJS utwórz szablon we Frontmailu. Skopiuj temat, To, From, Reply-To i treść. Potem kliknij Wykryj z szablonu i ustaw typy i wymagalność – różnice opisuje sekcja Składnia szablonów poniżej.

EmailJS Frontmail Gdzie to znaleźć
Public Key (user_id) Klucz publiczny pk_… Bezpieczeństwo → Klucz publiczny
Private Key (accessToken) Klucz prywatny sk_… – tylko na serwerze Bezpieczeństwo → Klucze prywatne (pokazywany raz)
Service ID ID usługi svc_… Usługi e-mail
Template ID ID szablonu tpl_… Szablony
Domain allowlist Dozwolone domeny Bezpieczeństwo → Dozwolone domeny
reCAPTCHA Cloudflare Turnstile z własnym bezpłatnym widżetem Klucze w Bezpieczeństwo → Ochrona przed botami (Turnstile), dla szablonu Ustawienia → Ochrona → Wymagaj CAPTCHA (Turnstile)
import emailjs from '@emailjs/browser';
import emailjs from '@frontmail/emailjs-compat';

Wywołania emailjs.init(), emailjs.send() i emailjs.sendForm() działają dalej – zmieniają się tylko identyfikatory i klucz. Zobacz Zgodność z EmailJS.

Używasz skryptu z CDN? Zamień <script> EmailJS na wersję compat, która udostępnia ten sam globalny obiekt emailjs, więc twoje wywołania zostają bez zmian:

<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>

Przypnij dokładną wersję i zachowaj atrybut integrity – gdzie znaleźć hash nowszych wydań, opisuje Przypnij wersję.

Możesz też załadować natywne SDK (@frontmail/browser, przypięte tak samo) i zmienić wywołania emailjs. na frontmail. – argumenty są te same, ale promise zwraca status: 'queued' albo 'held' zamiast 200.

Wołasz REST API bezpośrednio? Zmień host na https://api.frontmail.dev. Ścieżki /api/v1.0/email/send i /api/v1.0/email/send-form oraz pola treści żądania zostają takie same.

Jeśli twoje szablony używały reCAPTCHA, usuń widżet reCAPTCHA i dodaj Turnstile. Tak jak przy reCAPTCHA używasz kluczy z własnego konta: utwórz bezpłatny widżet Turnstile w Cloudflare, wklej jego klucze w Bezpieczeństwo → Ochrona przed botami (Turnstile) i kliknij Włącz CAPTCHA we wszystkich szablonach; nowe szablony będą jej wtedy domyślnie wymagać. Umieść widżet z kluczem witryny w formularzu – zobacz Turnstile. Pole g-recaptcha-response nie jest używane.

Wyślij test z edytora szablonu, wdróż zmiany i obserwuj Historię. Zachowaj konto EmailJS, dopóki nie zobaczysz, że przechodzi prawdziwy ruch.

@frontmail/browser albo SDK dla frameworka daje typowane parametry, status held, getStatus() i typowane błędy.

Frontmail używa Handlebars; EmailJS składni podobnej do Mustache. Typowe przypadki:

EmailJS Frontmail Uwagi
{{name}} {{name}} Tak samo. We Frontmailu zawsze escapowane jako HTML.
{{{html_content}}} {{html_content}} z parametrem typu html Potrójne nawiasy we Frontmailu nie wyłączają escapowania; użyj sanityzowanego typu html.
Sekcje w stylu {{#if}} z Mustache {{#name}}…{{/name}} {{#if name}}…{{/if}} Używaj jawnych bloków Handlebars.
Odwrócona sekcja Mustache {{^name}}…{{/name}} {{#unless name}}…{{/unless}}
Listy przez sekcje {{#each items}}…{{/each}} z parametrem list Do walidacji zdefiniuj itemFields.
– {{formatDate}}, {{formatMoney}}, {{eq}}… Dodatkowe helpery.

Wartości domyślne ustawione w polach szablonu EmailJS odpowiadają we Frontmailu wartości default parametru.

Rzeczowe porównanie funkcji istotnych przy migracji, stan na wrzesień 2026. Ceny i limity obu usług zmieniają się w czasie – przed decyzją sprawdź strony samych dostawców.

EmailJS Frontmail
Gdy wyczerpie się miesięczny limit Żądania są odrzucane do następnego okresu albo zmiany planu na wyższy Wiadomości są wstrzymywane i wysyłane automatycznie po dodaniu kredytów; opcjonalnie debet i automatyczne doładowanie
Przedpłacone pakiety kredytów z okresem ważności Brak Pakiety 5k / 25k / 100k ważne 3–12 miesięcy, w każdym planie
Rate limit REST API 1 żądanie na sekundę 2–50 żądań na sekundę zależnie od planu, do tego /v1/send-batch
Język szablonów Zmienne z prostymi sekcjami Handlebars z warunkami, pętlami, helperami oraz typowanymi i walidowanymi parametrami
CAPTCHA reCAPTCHA v2 Cloudflare Turnstile, włączana we wszystkich szablonach jednym kliknięciem
Przełączanie na zapasowego dostawcę Brak Usługa zapasowa dla każdego szablonu, codzienne sprawdzanie stanu
Śledzenie doręczeń Brak Delivered / bounced / complained / opened / clicked przez webhooki dostawcy
Ponawianie i idempotencja w SDK Nieudokumentowane Automatyczne ponawianie z kluczami idempotencji
SDK dla frameworków SDK dla przeglądarki, SDK dla React Native Browser, React, React Native, Vue, Svelte, Node, zgodne z EmailJS

Jeśli zauważysz tu nieaktualną informację, napisz do nas na support@frontmail.dev, a poprawimy ją.