Lista zmian
Tutaj znajdziesz zmiany, które dotyczą publicznego API albo SDK. Pakiety SDK stosują wersjonowanie semantyczne; ich szczegółowe listy zmian są publikowane z każdym wydaniem w npm.
Niewydane – publiczna beta
Dział zatytułowany „Niewydane – publiczna beta”Koniec wsparcia dla SendGrid (październik 2026)
Dział zatytułowany „Koniec wsparcia dla SendGrid (październik 2026)”Od 1 października 2026 SendGrid nie jest już dostępny jako dostawca e-maili. Jeśli wysyłałeś przez usługę SendGrid, przejdź na innego dostawcę API, np. Resend, Postmark, Mailgun, Brevo albo Mailjet, a potem wybierz nową usługę w swoich szablonach (także jako usługę zapasową, jeśli jej tam używałeś).
Tłumaczenia szablonów (wrzesień 2026)
Dział zatytułowany „Tłumaczenia szablonów (wrzesień 2026)”Jeden szablon możesz teraz wysyłać w wielu językach – zobacz Tłumaczenia szablonów.
- Panel: pasek Języki w edytorze szablonów. Do każdego szablonu dodasz do 29 wersji
językowych (dowolny język BCP 47, np.
hualbopt-BR) – jako kopię języka domyślnego, pustą albo przez tłumaczenie maszynowe. Wersje językowe tłumaczą temat, HTML, tekst i nazwę nadawcy; odbiorcy, parametry i ustawienia pozostają wspólne. Każda wersja ma własną historię wersji z przywracaniem oraz plakietki Nieaktualny / Maszynowe. Językiem domyślnym szablonu może być dowolny język (Ustawienia → Ogólne → Język domyślny). Eksport i import obejmują wersje językowe. - Tłumaczenie maszynowe z własnym kluczem: OpenAI, Anthropic, Google Gemini albo DeepL z własnym
kluczem API organizacji (Ustawienia → Tłumaczenie maszynowe, właściciele i administratorzy).
Frontmail sprawdza, czy parametry, linki i struktura HTML pozostały nienaruszone
(
translation_invalid). 30 tłumaczeń na godzinę na organizację, do 60 000 znaków. Nowe kody błędówtranslation_not_configured,translation_invalid,translation_provider_auth,translation_provider_error. - API: opcjonalne
localewPOST /v1/sendi w pozycjach/v1/send-batch, pole formularzafm_localewPOST /v1/send-form(pole o nazwielocalepozostaje parametrem szablonu). Wybór: dokładny język → ten sam język bazowy (de-AT→de) → język domyślny; błędnie zapisany znacznik zwraca400 invalid_body. Odpowiedzi na wysyłkę i wyniki wysyłek zbiorczych zwracają użytelocale,GET /v1/templateszwracalocales. Automatyczne odpowiedzi podążają za językiem pierwotnej wiadomości, a Wyślij ponownie go zachowuje. Ścieżki zgodne z EmailJS zawsze używają języka domyślnego. - Formatowanie: daty, liczby, kwoty i stopka planu Free zależą teraz od języka, w którym e-mail jest wysyłany (wcześniej od języka organizacji).
- SDK JavaScript (następne wydanie, 0.2.0 – razem z poniższym wzmocnieniem bezpieczeństwa SDK):
opcja
localewsend/sendForm(sendFormwysyła ją jakofm_locale), proplocalew<FrontmailForm>(React, Vue, Svelte) iuse:frontmailForm,result.locale;@frontmail/node:localewsend/ pozycjachsendBatch,templates.list()zwracalocales, afrontmail typeswypisuje języki każdego szablonu i typ<NazwaSzablonu>Locale.@frontmail/emailjs-compatsię nie zmienia (tylko język domyślny). - Android / Kotlin SDK 0.2.0:
SendOptions(locale = "de"),SendResult.locale. - iOS / Swift SDK 0.2.0:
SendOptions(locale: "de"),SendResult.locale.
Wzmocnienie bezpieczeństwa: brzeg publicznego API i klucze (wrzesień 2026)
Dział zatytułowany „Wzmocnienie bezpieczeństwa: brzeg publicznego API i klucze (wrzesień 2026)”Zmiany w działaniu – sprawdź swoją integrację:
- Żądania bez
OriginiReferer(serwery, curl, natywne aplikacje) z kluczem publicznym wymagają teraz Zezwól na aplikacje mobilne – także gdy lista dozwolonych domen jest pusta. Wcześniej pusta lista je przyjmowała. Organizacjom, które wysyłały takie żądania w ostatnich 30 dniach, przełącznik włączyliśmy automatycznie. W przeciwnym razie:403 origin_not_allowed(details.reason: "no_origin"). Na serwerach używaj klucza prywatnego. - Klucze prywatne z przeglądarek są odrzucane: żądanie z kluczem prywatnym (
Authorization: Beareralbo poleaccessTokenw stylu EmailJS), które ma nagłówekOrigin, dostaje nowy błąd403 private_key_in_browser. Dla narzędzi wewnętrznych można to włączyć: Bezpieczeństwo → Zezwól na klucze prywatne w przeglądarkach. - CAPTCHA dla żądań bez
Originjest weryfikowana wspólnym mobilnym widżetem Frontmaila tylko wtedy, gdy włączone jest Zezwól na aplikacje mobilne. Klucze testowe Cloudflare są na produkcji odrzucane. - Odpytywanie o status: token statusu wysyłaj w nagłówku
X-Frontmail-Status-Token;?token=nadal działa dla starszych SDK. - Rate limity: klienci IPv6 dzielą limit na IP w obrębie sieci
/64. Limity na klucz i na organizację oraz wykrywanie anomalii liczą teraz tylko żądania, które przeszły kontrolę szablonu i CAPTCHA, więc zalew nieprawidłowych żądań nie blokuje już twoich prawdziwych odwiedzających. - Załączniki: nazwy plików są czyszczone (niewidoczne znaki i znaki bidi, kropki na końcu), a więcej
niebezpiecznych typów jest odrzucanych (HTML, SVG, obrazy dysków, OneNote, pliki Office z makrami,
.url,.lnk, …). Przesyłanie plików z kluczem publicznym (POST /v1/uploads) wymaga szablonu, który przyjmuje załączniki, i ma dzienny limit bajtów na organizację. - Multipart
template_id/service_iddłuższe niż 64 znaki →400 invalid_body(wcześniej500). - API, API panelu i logowanie przyjmują tylko ruch, który przechodzi przez CDN Frontmaila.
POST /v1/send,/v1/send-form,/v1/send-batch,/v1/uploads,GET /v1/messages/:id,GET /v1/history,GET /v1/templatesoraz aliasy zgodne z EmailJS.- Jednolity format błędów z
docs_url; obsługaIdempotency-Key(24 h). - Kolejka wstrzymanych wiadomości ze statusami
held/held_service_errori trybamihold/reject. - Blokada treści dla wysyłek z kluczem publicznym do szablonów z dynamicznym odbiorcą: wymagana
CAPTCHA (
dynamic_recipient_requires_captcha), stałe pola nadawcy (dynamic_field_not_allowed), bez parametrów HTML i z tekstami ≤ 500 znaków, linki tylko do dozwolonych domen (link_not_allowed) i najwyżej 5 e-maili na odbiorcę dziennie. Adres From z parametrów jest odrzucany przy każdej wysyłce z kluczem publicznym. Automatyczne odpowiedzi też są zablokowane. Nowe ustawienia:security.allowedLinkDomains,security.recipientDailyLimit, w szablonieenforceLinkAllowlist. Zobacz Dozwolone linki i blokada treści.
@frontmail/browser0.x (ESM + UMD, przypnij wersję z SRI),@frontmail/react,@frontmail/react-native,@frontmail/vue,@frontmail/svelte,@frontmail/nodez CLIfrontmail types,@frontmail/emailjs-compat.- Automatyczne ponawianie z wykładniczym odstępem i kluczami idempotencji; typowane błędy.
Bezpieczeństwo
Dział zatytułowany „Bezpieczeństwo”- Weryfikacja dwuetapowa jest teraz wymagana przy każdej metodzie logowania – także przy linkach logowania wysyłanych e-mailem i przy Google / GitHub – i można ją włączyć tylko ze zweryfikowanym adresem e-mail.
- Linki logowania i weryfikacji otwarte w innej przeglądarce proszą o potwierdzenie (albo tej przeglądarki nie logują), więc link wysłany przez kogoś innego nie zaloguje cię na jego konto.
- Zmiana e-maila logowania wymaga hasła i zgody z obecnego adresu.
- Administratorzy nie mogą już nadawać roli Płatności; administratorami i członkami z rolą Płatności zarządza tylko właściciel.
- Adresy URL webhooków dostawców są ukryte przed obserwatorami i członkami z rolą Płatności i można je wygenerować na nowo (Wygeneruj nowy URL webhooka).
- Własne serwery SMTP muszą mieć publiczny adres i port 25, 465, 587 albo 2525.
- Załączniki szablonów mogą używać tylko plików przesłanych przez tę samą organizację.
- Zaproszenia do zespołu są limitowane na odbiorcę i organizację; nazwy organizacji nie mogą zawierać linków.
- Dane o kliknięciach eksportowane do analityki nie zawierają już query stringów (tokenów, e-maili).
Wzmocnienie bezpieczeństwa SDK (następne wydanie SDK, 0.2.0)
Dział zatytułowany „Wzmocnienie bezpieczeństwa SDK (następne wydanie SDK, 0.2.0)”- Zmiana niekompatybilna: SDK dla przeglądarki (
@frontmail/browser, React, Vue, Svelte,@frontmail/emailjs-compat) rzucająprivate_key_in_browser, gdy w przeglądarce użyto klucza prywatnego (privateKey, w compataccessToken);@frontmail/nodeodmawia tam działania. Wyłączenie:dangerouslyAllowPrivateKeyInBrowser: true. sendFormpomija pola haseł, pola anty-CSRF i zarezerwowane nazwy; noweformFields: { include, exclude }.getStatuswysyła token statusu w nagłówkuX-Frontmail-Status-Tokenzamiast?token=.<TurnstileWebView>w React Native jest ograniczony do strony widżetu (domeny, nawigacja, wiadomości).- CDN:
sri.jsonz hashamiintegrityobok każdego wersjonowanego pakietu; dokumentacja używa adresów URL z przypiętą wersją i Subresource Integrity.
- Edytor szablonów HTML z podglądem na żywo, typowanymi parametrami, kontrolami, wersjami i galerią (EN/CS).
- Usługi dla SMTP, Mailgun, Amazon SES, Postmark, SendGrid, Mailjet, Brevo, Resend, Gmail i Outlook / Microsoft 365, z przełączaniem awaryjnym i sprawdzaniem stanu.
- Kredyty: plany, pakiety kredytów, debet, automatyczne doładowanie; statystyki zużycia.
Płatności i kredyty (poprawki bezpieczeństwa)
Dział zatytułowany „Płatności i kredyty (poprawki bezpieczeństwa)”- Plany roczne dostają teraz miesięczny limit i zapas debetu w każdym miesiącu okresu (wcześniej tylko w pierwszym).
- Debet wykorzystany w planach rocznych jest rozliczany co miesiąc osobną fakturą; debet wykorzystany przed końcem subskrypcji (anulowanie, usunięcie organizacji) jest rozliczany od razu.
- Przejście z planu miesięcznego na roczny przenosi kredyty zużyte w bieżącym miesiącu.
- Zmiany planu są odrzucane, dopóki subskrypcja ma nieopłaconą fakturę (
409 conflict,details.reason: "subscription_not_active"). - Sporne (obciążone zwrotnie) płatności usuwają kupione za nie kredyty; jeśli spór zostanie wygrany, kredyty wracają. Zwroty są przetwarzane pojedynczo.
- Nowość: kolejka wstrzymanych wiadomości ma limit na organizację; po jego przekroczeniu żądania
dostają
402 insufficient_creditszdetails.reason: "hold_queue_full". - Nowość: e-maile wysłane z kluczem publicznym nie korzystają z debetu ani nie uruchamiają automatycznego doładowania, chyba że włączysz to w Płatności → Kup kredyty → Wydatki z ruchu na kluczu publicznym (domyślnie wyłączone, także w istniejących organizacjach).
- Własne serwery SMTP: błędy po tym, jak serwer przyjął wiadomość, nie są już zwracane; ochrona przed nadmiernymi zwrotami w organizacji wstrzymuje zwroty, gdy błędy są nienormalnie częste.
- Webhooki dostawców wykluczają tylko faktycznych odbiorców wiadomości; webhooki Amazon SES przypinają temat SNS pierwszej podpisanej wiadomości. Wyślij ponownie odrzuca szablony zamrożone po przejściu na niższy plan.