Przejdź do głównej zawartości

Mailjet

Mailjet (część Sinch) to europejska platforma do poczty transakcyjnej i marketingowej. Domyślnie przechowuje dane w UE i ma użyteczny darmowy plan, dlatego jest popularny wśród europejskich małych firm.

Wybierz Mailjet, gdy chcesz dostawcę z UE z darmowym planem albo już wysyłasz przez Mailjet newslettery i chcesz wysyłać pocztę transakcyjną z tego samego konta. Do czysto transakcyjnej wysyłki z największym naciskiem na dostarczalność zobacz Postmark; do hostingu w UE z API dla programistów – Mailgun EU. Porównanie: przegląd usług.

  • Konto Mailjet (nowe konta mogą przejść krótką weryfikację przy aktywacji).
  • Zweryfikowany nadawca: dodaj domenę w Account settings → Senders & Domains → Add domain i uwierzytelnij ją (SPF + DKIM) albo przynajmniej zweryfikuj pojedynczy adres nadawcy.
  • Para kluczy API (klucz API + klucz tajny). Klucze Mailjet nie mają zakresów uprawnień, więc opcją z minimalnymi uprawnieniami jest osobny klucz subkonta: Account settings → REST API → API Key Management → Create a sub-account API key. Subkonto ma własnych nadawców, statystyki i limit i można je unieważnić bez ruszania głównego klucza.
  1. Otwórz Usługi e-mail → Dodaj usługę → Mailjet.
  2. Wypełnij pola:
Pole Gdzie je znaleźć Przykład
Klucz API Account settings → REST API → API Key Management a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
Klucz tajny Ta sama strona (kliknij, żeby odsłonić; można go wygenerować ponownie) f6e5d4c3b2a1…
Nazwa użytkownika webhooka Opcjonalnie – nazwa użytkownika, którą wpiszesz w URL webhooka (zobacz niżej) frontmail
Hasło webhooka Opcjonalnie – odpowiadające jej hasło long-random-string
Maks. liczba e-maili na sekundę Opcjonalnie; domyślnie 10/s 5
  1. Kliknij Zweryfikuj i zapisz – Frontmail wywoła API Mailjet z parą kluczy.
  2. Usługa zostanie zapisana, gdy sprawdzenie się powiedzie. Oba klucze są szyfrowane kopertowo przez AWS KMS.

Mailjet pokazuje wartości w Senders & Domains → twoja domena → Authentication settings:

; SPF – merge with your existing SPF record (only one per domain!)
example.com. TXT "v=spf1 include:spf.mailjet.com ~all"
; DKIM
mailjet._domainkey.example.com. TXT "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD…"
; Domain ownership (only when Mailjet asks for it)
mailjet._a1b2c3d4.example.com. TXT "a1b2c3d4e5f6…"
; DMARC
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
  • Jeśli masz już v=spf1 include:_spf.google.com ~all, zmień go na v=spf1 include:_spf.google.com include:spf.mailjet.com ~all – nie dodawaj drugiego rekordu SPF.
  • Nadawcą koperty w Mailjet jest jego własna domena odbić, więc wyrównanie DMARC opiera się na DKIM – upewnij się, że DKIM pokazuje OK.
  • Zacznij DMARC od p=none, później zaostrz.

Frontmail komunikuje się z api.mailjet.com. Mailjet domyślnie przechowuje dane w UE. Mailjet ma też osobną infrastrukturę w USA (api.us.mailjet.com) dla kont tam utworzonych – Frontmail obsługuje obecnie tylko domyślny endpoint, więc użyj konta utworzonego na standardowej (unijnej) platformie.

  • Darmowy plan: 200 e-maili dziennie, 6000 miesięcznie.
  • Plany płatne znoszą limit dzienny i są rozliczane miesięcznie.
  • Nowe konta mogą zostać poddane przeglądowi przez zespół compliance Mailjet, jeśli wskaźnik odbić lub skarg jest wysoki; do końca przeglądu wysyłka jest zablokowana.
  • Flaga API SandboxMode w Mailjet waliduje wiadomości bez ich wysyłania; Frontmail jej nie używa.

Mailjet nazywa je Event notifications (webhooki).

  1. Skopiuj URL webhooka ze strony usługi we Frontmail (przycisk kopiowania):

    https://api.frontmail.dev/webhooks/providers/mailjet/<token>
  2. Zalecane: zabezpiecz go przez Basic auth. Mailjet nie ma osobnego pola na uwierzytelnianie, więc wpisz dane logowania w URL, a te same wartości podaj we Frontmail w polach Nazwa użytkownika webhooka / Hasło webhooka:

    https://frontmail:long-random-string@api.frontmail.dev/webhooks/providers/mailjet/<token>
  3. W Mailjet otwórz Account settings → Event notifications (webhooks) i wklej URL dla tych zdarzeń:

Zdarzenie Mailjet Zdarzenie Frontmail
Sent (przyjęte przez serwer odbiorcy) delivered
Bounce – hard_bounce: true bounced – dodany do listy wykluczeń
Bounce – soft, Blocked zapisywane jako miękkie odbicie
Spam complained – dodany do listy wykluczeń
Open opened
Click clicked
  1. Po zapisaniu Mailjet wysyła wywołanie testowe; zdarzenie powinno pojawić się w dzienniku zdarzeń usługi.

Weryfikacja podpisu: Mailjet nie podpisuje danych zdarzeń. Tajny token w URL identyfikuje usługę, a jeśli ustawisz hasło webhooka, Frontmail odrzuca każde żądanie, którego Basic auth się nie zgadza.

Frontmail ustawia CustomID w Mailjet na ID wiadomości Frontmail, żeby zdarzenia trafiały do właściwej wiadomości.

  • auth – usługa nie działa (błędny klucz API/tajny, 401/403, niezweryfikowany nadawca lub domena, zablokowane konto). Usługa zostaje oznaczona jako unhealthy; właściciel dostaje e-mail i baner w panelu. Przejmuje usługa zapasowa szablonu; bez niej kredyt wraca, a wiadomość czeka w kolejce wstrzymanych wiadomości jako held_service_error i jest wysyłana automatycznie po naprawieniu usługi (sprawdzanej ponownie przy zapisie i w codziennym health checku).
  • permanent – tej wiadomości nie da się wysłać (nieprawidłowy odbiorca, walidacja 400). Usługa zapasowa, jeśli jest skonfigurowana, w przeciwnym razie failed i zwrot kredytu.
  • transient – 5xx, 429, timeouty. Ponawiane z wykładniczym opóźnieniem; po ostatniej próbie failed i zwrot kredytu.
Odpowiedź Mailjet Klasa Co zrobić
401 – API key authentication/authorization failure auth Sprawdź parę: klucz API i klucz tajny; w razie potrzeby wygeneruj nowe.
403 – Forbidden / konto zablokowane lub w przeglądzie auth Sprawdź panel Mailjet i skontaktuj się z pomocą techniczną Mailjet.
400 – „The sender … is not validated / not authorized” auth Zweryfikuj adres nadawcy lub domenę w Senders & Domains (we właściwym subkoncie).
400 mj-0013 – „… is an invalid email address” permanent Zobacz nieprawidłowy odbiorca.
400 – inne błędy walidacji (za długi temat, za duży załącznik) permanent Popraw szablon; zobacz Szablony HTML.
429 – Too many requests transient Osiągnięto limit tempa lub dzienny; Frontmail ponawia próby. Obniż Maks. liczba e-maili na sekundę.
500 / 503, timeout transient Awaria Mailjet – Frontmail ponawia próby.
  • Domena dodana i uwierzytelniona w Mailjet (SPF include + mailjet._domainkey)
  • Jeden scalony rekord SPF; DMARC p=none
  • Osobna para kluczy API subkonta
  • Testuj połączenie przechodzi
  • URL powiadomień o zdarzeniach z danymi Basic auth, te same wartości we Frontmail
  • Włączone zdarzenia: sent, bounce, blocked, spam (+ open, click)
  • Dzienny wolumen w granicach limitu twojego planu