Przejdź do głównej zawartości

Resend

Resend to nowoczesne API poczty tworzone z myślą o programistach, z przejrzystym panelem i szybką konfiguracją domeny. Świetnie pasuje do nowych projektów, w których poczta transakcyjna ma działać w kilka minut.

Wybierz Resend, gdy zaczynasz nowy projekt, lubisz proste narzędzia i wysyłasz mały lub średni wolumen poczty transakcyjnej. Darmowy plan jest niewielki, ale wystarcza dla większości formularzy kontaktowych. Przy bardzo dużych wolumenach w najniższej cenie zobacz Amazon SES; do marketingu i poczty transakcyjnej z danymi w UE – Brevo lub Mailjet. Zobacz przegląd usług.

  • Konto Resend.
  • Zweryfikowana domena (Domains → Add domain). Bez niej możesz wysyłać tylko testowe e-maile z onboarding@resend.dev na adres swojego konta – zobacz Sandbox i limity.
  • Klucz API z uprawnieniem „Sending access” (nie „Full access”): API Keys → Create API key → Permission: Sending access, opcjonalnie ograniczony do jednej domeny. To minimalne uprawnienie, jakiego potrzebuje Frontmail. Testuj połączenie rozpoznaje klucz tylko do wysyłania i go akceptuje.
  1. Otwórz Usługi e-mail → Dodaj usługę → Resend.
  2. Wypełnij pola:
Pole Gdzie je znaleźć Przykład
Klucz API API Keys (wyświetlany tylko raz) re_123abc456def…
Sekret podpisu webhooka Webhooks → your endpoint → Signing secret whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Maks. liczba e-maili na sekundę Opcjonalnie; domyślnie 2/s (domyślny limit zespołu w Resend) 2
  1. Kliknij Zweryfikuj i zapisz.
  2. Usługa zostanie zapisana, gdy sprawdzenie się powiedzie. Dane dostępowe są szyfrowane kopertowo przez AWS KMS.

Resend pokazuje rekordy na stronie domeny. Dla example.com wyglądają tak:

; DKIM
resend._domainkey.example.com. TXT "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ…"
; SPF + bounce handling on the "send" subdomain (the envelope sender)
send.example.com. MX 10 feedback-smtp.us-east-1.amazonses.com.
send.example.com. TXT "v=spf1 include:amazonses.com ~all"
; DMARC (recommended by Resend, not created automatically)
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
  • SPF jest w subdomenie send, więc nie musisz ruszać rekordu SPF domeny głównej.
  • Host MX zawiera region wybrany dla domeny (us-east-1, eu-west-1, …).
  • Niektórzy dostawcy DNS automatycznie dopisują domenę – jako nazwy hostów wpisz resend._domainkey i send, a nie pełne nazwy.
  • Zacznij DMARC od p=none, potem zaostrz do p=quarantine / p=reject.

Przy dodawaniu domeny Resend pozwala wybrać jej region wysyłki – np. North Virginia (us-east-1), Irlandię (eu-west-1), São Paulo (sa-east-1) lub Tokio (ap-northeast-1). Endpoint API (api.resend.com) jest wspólny dla wszystkich regionów, więc we Frontmail nie ma pola regionu; region to właściwość domeny. Żeby go zmienić, dodaj domenę ponownie z nowym regionem i zaktualizuj DNS.

  • Bez zweryfikowanej domeny możesz wysyłać tylko z onboarding@resend.dev i tylko na adres e-mail swojego konta Resend. Wszystko inne kończy się błędem 403 – You can only send testing emails to your own email address, który Frontmail traktuje jako błąd auth.
  • Darmowy plan: 3000 e-maili miesięcznie, 100 dziennie, 1 domena.
  • Limit żądań: domyślnie 2 żądania na sekundę na zespół; dlatego domyślne tempo Frontmail dla Resend to 2/s. Resend może je podnieść na prośbę.
  • Przekroczenie dziennego lub miesięcznego limitu zwraca 429 daily_quota_exceeded / monthly_quota_exceeded; ponawianie nie pomoże do czasu odnowienia limitu, więc takie wiadomości zwykle kończą jako failed ze zwrotem kredytu.
  1. Skopiuj URL webhooka ze strony usługi we Frontmail (przycisk kopiowania):

    https://api.frontmail.dev/webhooks/providers/resend/<token>
  2. W Resend otwórz Webhooks → Add endpoint, wklej URL i wybierz zdarzenia:

Zdarzenie Resend Zdarzenie Frontmail
email.delivered delivered
email.bounced (Permanent) bounced – dodany do listy wykluczeń
email.bounced (Transient / inne) zapisywane jako miękkie odbicie
email.delivery_delayed zapisywane przy wiadomości
email.complained complained – dodany do listy wykluczeń
email.opened opened (włącz śledzenie otwarć w domenie)
email.clicked clicked (włącz śledzenie kliknięć w domenie)
  1. Otwórz endpoint, skopiuj Signing secret (whsec_…) i wklej go w pole Sekret podpisu webhooka we Frontmail.

Weryfikacja podpisu: Resend dostarcza webhooki przez Svix. Frontmail sprawdza nagłówki svix-id, svix-timestamp i svix-signature: HMAC-SHA256 z id.timestamp.body twoim sekretem podpisu, i odrzuca żądania ze znacznikiem czasu przesuniętym o więcej niż 5 minut. Bez sekretu zdarzenia nie są weryfikowane i są ignorowane.

Frontmail dodaje do każdego e-maila tag z ID wiadomości, żeby dało się dopasować zdarzenia.

  • auth – usługa nie działa (nieprawidłowy lub usunięty klucz, niezweryfikowana domena, ograniczenia trybu testowego, 401/403). Usługa zostaje oznaczona jako unhealthy; właściciel dostaje e-mail i baner w panelu. Przejmuje usługa zapasowa szablonu; w przeciwnym razie 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 422). 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ź Resend Klasa Co zrobić
401 missing_api_key / 403 invalid_api_key auth Utwórz nowy klucz Sending access i zaktualizuj usługę.
403 validation_error – The example.com domain is not verified auth Dokończ weryfikację domeny w Resend albo popraw domenę nadawcy w szablonie.
403 validation_error – You can only send testing emails to your own email address auth Zweryfikuj własną domenę; testowy nadawca resend.dev służy tylko do wysyłki do twojej skrzynki.
422 validation_error – Invalid to field permanent Zobacz nieprawidłowy odbiorca.
422 invalid_attachment / 422 validation_error (inne pola) permanent Popraw szablon lub załącznik; zobacz Szablony HTML.
429 rate_limit_exceeded transient Za dużo żądań na sekundę; trzymaj Maks. liczba e-maili na sekundę na poziomie 2 albo poproś Resend o więcej.
429 daily_quota_exceeded / monthly_quota_exceeded transient Limit wyczerpany; przejdź na wyższy plan.
500 internal_server_error, timeout transient Awaria Resend – Frontmail ponawia próby.
  • Domena zweryfikowana: TXT resend._domainkey + MX i TXT send
  • Opublikowany rekord DMARC (na początek p=none)
  • Klucz API tylko z Sending access
  • Testuj połączenie przechodzi
  • Adres nadawcy w szablonie w zweryfikowanej domenie (nie resend.dev)
  • Endpoint webhooka z delivered, bounced, complained (+ opened/clicked)
  • Sekret podpisu (whsec_…) skopiowany do Frontmail