Brevo SMTP: przewodnik po konfiguracji, ustawieniach i rozwiązywaniu problemów
Skonfiguruj Brevo SMTP poprawnie: host serwera, porty 587, 465 i 2525, klucze SMTP, uwierzytelnianie domeny, WordPress i przykłady kodu, limity oraz naprawa błędów.
Brevo SMTP przenosi wychodzącą pocztę aplikacji z lokalnego agenta pocztowego hostingu na infrastrukturę, która uwierzytelnia, loguje i raportuje każdą wiadomość. Konfiguracja jest niewielka: jedna nazwa hosta, jeden port, dwa poświadczenia. Pomyłka też jest niewielka, a tryby awarii są ciche. Ten przewodnik omawia ustawienia, model poświadczeń, prace w DNS, dzięki którym poczta w ogóle dociera, oraz błędy, które napotkasz, jeśli któryś element będzie źle skonfigurowany. Jeśli wciąż wybierasz dostawcę, szerszy przewodnik po usługach SMTP porównuje najpierw cały rynek.
Czym jest Brevo SMTP
Brevo opisuje Brevo SMTP jako swoją usługę przekaźnika SMTP. Twoja aplikacja, strona lub serwer pocztowy przekazuje wiadomość do przekaźnika przez uwierzytelnione połączenie, a Brevo bierze na siebie routing, ponowienia, reputację i raportowanie. Statystyki przekazywanej poczty pojawiają się obok statystyk kampanii, a twarde odbicie automatycznie umieszcza kontakt na czarnej liście.
Przekaźnik jest zbudowany do wiadomości transakcyjnych: resetów hasła, potwierdzeń, potwierdzeń zamówień, powiadomień o koncie. Jeśli granica między nimi a pocztą marketingową nie jest jeszcze dla Ciebie ostra, czym jest email transakcyjny to wyjaśnia.
SMTP czy REST API
Obie ścieżki docierają do tej samej platformy. Praktyczny podział:
| Użyj SMTP, gdy | Użyj REST API, gdy |
|---|---|
| System mówi wyłącznie po SMTP (WordPress, Postfix, ERP, klient pocztowy) | Piszesz integrację i chcesz mieć ustrukturyzowane błędy |
| Migrujesz istniejącą konfigurację SMTP i chcesz najkrótszej zmiany | Potrzebujesz wysyłki wsadowej, harmonogramowania albo kluczy idempotencji |
Jedno twarde ograniczenie: dokumentacja Brevo dla programistów podaje, że przekaźnik SMTP nie obsługuje wysyłki wsadowej, i kieruje operacje wsadowe do endpointów API.
Tworzenie poświadczeń SMTP
Uwierzytelnianie SMTP w Brevo używa dwóch wartości, które łatwo pomylić z poświadczeniami, które już masz.
Znajdź swój login SMTP
Twój login SMTP to nie jest adres email Twojego konta Brevo. To osobny identyfikator pokazany w polu Login na stronie Settings, SMTP and API, w formacie [email protected].
Wynikają z tego dwie zasady, obie z dokumentacji Brevo dotyczącej rozwiązywania problemów. Nie wpisuj smtp-relay.brevo.com w pole nazwy użytkownika: to host przekaźnika, a nie Twój login. I nie wpisuj loginu SMTP w nagłówek From, bo on Cię uwierzytelnia, a nie identyfikuje nadawcy.
Wygeneruj klucz SMTP
Hasłem jest klucz SMTP, a nie hasło do konta ani klucz API.
- Otwórz rozwijane menu konta i wybierz Settings, a potem SMTP and API.
- Na karcie SMTP kliknij Generate a new SMTP key.
- Nazwij klucz od integracji, która będzie go używać.
- Wybierz wariant. Standard to zalecany klucz 64-znakowy, Short to klucz 15-znakowy dla klientów, którzy nie radzą sobie z długimi hasłami.
- Ustaw wygaśnięcie między 7 dniami a 1 rokiem albo wybierz brak wygaśnięcia.
- Kliknij Generate, a potem natychmiast skopiuj pełny klucz.
Pełny klucz wyświetla się raz, po czym strona pokazuje już tylko kilka jego ostatnich znaków. Jeśli go zgubisz, wygeneruj zastępczy i zaktualizuj konfigurację.
Ustawienia połączenia
Wartości do wpisania w dowolnym kliencie lub bibliotece:
| Ustawienie | Wartość |
|---|---|
| Serwer SMTP | smtp-relay.brevo.com |
| Port | 587, 465 lub 2525 |
| Szyfrowanie | Zostaw puste, chyba że używasz portu 465, który wymaga SSL lub TLS |
| Nazwa użytkownika | Twój login SMTP, format [email protected] |
| Hasło | Twój klucz SMTP |
Wybór portu
| Port | Szyfrowanie | Kiedy go użyć |
|---|---|---|
| 587 | TLS, negocjowane przez STARTTLS | Domyślny. Zacznij tutaj. |
| 465 | SSL lub TLS, niejawne od momentu połączenia | Gdy Twój klient wymaga niejawnie szyfrowanego połączenia |
| 2525 | TLS, negocjowane przez STARTTLS | Gdy Twój dostawca hostingu blokuje 587 |
Brevo rekomenduje 587 jako domyślny. Port 465 był przeznaczony dla SMTP przez SSL, a później wycofany, ale pozostaje szeroko wspierany i jest właściwy, gdy potrzebujesz połączenia zaszyfrowanego jeszcze przed pierwszą komendą. Port 2525 nie jest portem zarejestrowanym w IETF ani IANA, ale większość dostawców internetu i chmur go dopuszcza, co czyni go furtką awaryjną, gdy 587 jest zablokowany.
Pole szyfrowania jest zdradliwe. Brevo każe zostawić je puste, o ile nie jesteś na 465. To nie znaczy, że połączenie jest nieszyfrowane: na 587 i 2525 serwer ogłasza STARTTLS, a każdy kompetentny klient podnosi szyfrowanie przed uwierzytelnieniem. Znaczy to tyle, że nie powinieneś wybierać „SSL”, łącząc się na 587, bo niedopasowanie portu i szyfrowania powoduje niepowodzenie uwierzytelnienia nawet przy poprawnych poświadczeniach.
Przetestuj połączenie, zanim napiszesz jakikolwiek kod
Potwierdź, że przekaźnik odpowiada i że TLS się negocjuje, zanim zaczniesz debugować kod aplikacji.
openssl s_client -starttls smtp -crlf -connect smtp-relay.brevo.com:587Udany handshake kończy się listą możliwości serwera z kodem 250, która powinna zawierać STARTTLS oraz linię AUTH wymieniającą PLAIN i LOGIN. Zupełny brak banera to problem sieciowy, a nie problem z poświadczeniami.
Uwierzytelnianie domeny nadawczej
To jest krok, który ludzie pomijają, i to on decyduje, czy cokolwiek dotrze. Od 1 lutego 2024 uwierzytelnianie domeny jest obowiązkowe w świetle wymagań Gmaila i Yahoo wobec nadawców, a Brevo zaznacza, że Microsoft ogłosił podobne standardy 5 maja 2025. Nieuwierzytelniona poczta jest filtrowana lub odrzucana niezależnie od tego, który przekaźnik ją wysłał.
Rekordy, o które prosi Brevo
| Rekord | Typ | Cel |
|---|---|---|
| Kod Brevo | TXT | Potwierdza, że jesteś właścicielem domeny nadawczej i ją kontrolujesz |
| DKIM | 1 TXT lub 2 CNAME | Podpisuje wiadomości, żeby odbiorcy wykryli modyfikację w tranzycie |
| DMARC | TXT | Mówi serwerom odbierającym, jak traktować podejrzaną pocztę, przy użyciu polityki none, quarantine lub reject |
Brevo może dodać te rekordy automatycznie, jeśli zalogujesz się do swojego dostawcy domeny z poziomu Brevo, albo możesz skopiować wartości do swojej strefy DNS ręcznie. To, którą formę DKIM dostaniesz, zależy od konta: dwa rekordy CNAME używają domyślnie klucza 2048-bitowego, a pojedyncza forma TXT klucza 1024-bitowego.
Dlaczego nie ma rekordu SPF
FAQ Brevo mówi wprost: rekordy SPF i MX nie są wymagane do uwierzytelnienia domeny i dostarczane są tylko przy konfiguracji dedykowanego adresu IP. Na infrastrukturze współdzielonej Brevo kontroluje ścieżkę zwrotną, więc uwierzytelnienie niesie DKIM plus weryfikacja własności. Jeśli migrujesz od dostawcy, który wymagał wpisu include w SPF, nie wymyślaj go; niepotrzebny include grozi tylko przekroczeniem limitu odwołań.
DMARC nadal ma znaczenie, a Brevo publikuje działający rekord startowy:
v=DMARC1; p=none; rua=mailto:[email protected]Zacznij od p=none, żeby zbierać raporty zbiorcze bez ryzyka dla dostarczania, a potem zaostrz do quarantine i reject, gdy każde legalne źródło będzie już zgodne. Nasz przewodnik po dostarczalności emaili opisuje tę progresję.
Zweryfikuj nadawcę
Każdy adres w polu From musi być zweryfikowanym nadawcą albo siedzieć na uwierzytelnionej domenie. Nowego nadawcę weryfikuje się 6-cyfrowym kodem wysłanym na ten adres, ale nadawcy z uwierzytelnionej domeny pomijają ten krok, i właśnie dlatego najpierw uwierzytelniasz domenę. Darmowych domen pocztowych nie da się uwierzytelnić, więc adres From w gmail.com czy outlook.com zostanie odrzucony lub odfiltrowany.
Przykłady integracji
WordPress
WordPress przekazuje wychodzącą pocztę do wp_mail, które woła to, co daje hosting. Przekierowanie jej przez Brevo wymaga wtyczki.
- W bocznym panelu administracyjnym wejdź w Wtyczki, a potem Dodaj nową wtyczkę.
- Wyszukaj Brevo, zainstaluj „Newsletter, SMTP, Email marketing and Subscribe forms by Brevo”, a potem ją aktywuj.
- Wejdź w Brevo, a potem Home, i wpisz swój klucz Brevo API v3 w polu aktywacji. Ten krok używa klucza API, bo wtyczka synchronizuje też kontakty. Kliknij Login.
- W sekcji Transactional emails wybierz Yes.
- Wybierz istniejącego nadawcę albo utwórz nowego. Każdy email z WordPressa używa tej nazwy i tego adresu nadawcy.
- Wpisz adres i kliknij Send email, żeby odpalić test.
Dwa błędy są częste. Komunikat, że emaile transakcyjne nie są aktywne, bo Twoje konto Brevo SMTP nie zostało aktywowane, oznacza, że wsparcie Brevo musi włączyć platformę. Komunikat, że nie można użyć SMTP, bo wp_mail zostało zadeklarowane przez inny proces, oznacza konkurencyjną wtyczkę SMTP; wyłączaj pozostałe po jednej.
Aplikacja po stronie serwera
Własny przykład Brevo dla Node.js używa nodemailera i powyższych ustawień:
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({ host: "smtp-relay.brevo.com", port: 587, secure: false, // true dla 465, false dla pozostałych portów auth: { pass: process.env.BREVO_SMTP_KEY, },});
async function sendOrderConfirmation() { const info = await transporter.sendMail({ subject: "Twoje zamówienie jest potwierdzone", text: "Zamówienie 10482 jest potwierdzone i zostanie wysłane w ciągu dwóch dni roboczych.", }); console.log("Message sent:", info.messageId);}
sendOrderConfirmation().catch(console.error);Zwróć uwagę na secure: false przy porcie 587. Ta flaga steruje niejawnym TLS, a nie tym, czy połączenie jest szyfrowane; nodemailer i tak wysyła STARTTLS. Ustaw true wyłącznie dla 465.
Odpowiednik w Pythonie z biblioteką standardową:
import smtplib, sslfrom email.message import EmailMessage
msg = EmailMessage()msg["Subject"] = "Twoje zamówienie jest potwierdzone"msg.set_content("Zamówienie 10482 jest potwierdzone i zostanie wysłane w ciągu dwóch dni roboczych.")
with smtplib.SMTP("smtp-relay.brevo.com", 587, timeout=20) as server: server.starttls(context=ssl.create_default_context()) server.login(BREVO_SMTP_LOGIN, BREVO_SMTP_KEY) server.send_message(msg)Oba czytają poświadczenia ze środowiska, o czym jest następna sekcja.
Bezpieczeństwo i rotacja kluczy
Brevo traktuje klucze SMTP jak hasła. Zasady operacyjne warto stosować dosłownie.
- Jeden klucz na integrację. Nazwij każdy klucz od systemu, który go używa, żeby wyciek albo wycofanie unieważniały dokładnie jedną rzecz.
- Nigdy nie commituj klucza. Zmienne środowiskowe, menedżer sekretów albo magazyn konfiguracji Twojej platformy. Nie kontrola źródeł, nie śledzony plik
.env, nie zrzut ekranu. - Rotuj bez przestoju. Wygeneruj zastępczy, wdróż, potwierdź wysyłkę, a dopiero potem usuń stary klucz. Usunięcie jest nieodwracalne, a skasowanie klucza wciąż używanego natychmiast zatrzymuje wysyłkę transakcyjną.
- Dezaktywuj zamiast usuwać, żeby wstrzymać integrację. Klucze można później reaktywować.
- Licz się z wygaśnięciem. Klucze mogą mieć termin ważności od 7 dni do 1 roku, a Brevo wygasza nieaktywne klucze po 90 dniach.
Dla twardszej granicy Brevo może blokować zapytania z nieznanych adresów IP. Lista autoryzowanych jest wspólna dla kluczy API i SMTP, więc cokolwiek dopuścisz, dotyczy obu. Uważaj przy obciążeniach kontenerowych i chmurowych: adres wychodzący może należeć do bramy NAT, a nie do instancji, której się spodziewasz, a pomyłka daje odrzucenie 525 5.7.1 Unauthorized IP address.
Zespoły prowadzące Brevo obok sklepu, CRM i działu wsparcia kończą z kilkoma kluczami, nadawcami i domenami naraz. Tajo trzyma tę konfigurację w jednym miejscu zamiast w czterech panelach.
Limity wysyłki i dławienie
Wysyłka SMTP czerpie z kredytów emailowych Twojego planu. Na planie Free oznacza to 300 wysłanych emaili dziennie; limit resetuje się codziennie, a niewykorzystane wysyłki nie przechodzą dalej. Gdy go osiągniesz, Brevo trzyma do 1000 kolejnych emaili w kolejce ponowień i poza tą kolejką nie dostarcza nic. Plany płatne znoszą dzienny pułap, a przewodnik po cenniku Brevo rozkłada poziomy na czynniki pierwsze.
Gdy kredyty skończą się całkiem, wiadomości przesłane przez SMTP są wstrzymywane i kolejkowane, a nie odrzucane. Zaległości znajdziesz w sekcji Transactional, potem Real time, potem Usage and plan, w części Email queue.
Brevo publikuje twarde limity zapytań dla REST API, a nie dla przekaźnika. Na poziomie ogólnym POST /v3/smtp/email dopuszcza 1000 zapytań na sekundę, a przekroczenie limitu zwraca 429 Too Many Requests. Ścieżka API zwraca też nagłówki limitów, którymi można dozować tempo, czego przekaźnik nie robi.
Monitorowanie odbić i skarg
Przekazywana poczta jest widoczna w sekcji Transactional, na stronach Statistics i Logs. Zdarzenia, które wymagają reakcji:
- Twarde odbicie. Adres jest nieprawidłowy, a Brevo automatycznie umieszcza kontakt na czarnej liście.
- Zablokowane. Odbiorca wcześniej złożył skargę, wypisał się, twardo się odbił albo został zablokowany ręcznie.
- Odroczenie i miękkie odbicie. Dostawca przyjął połączenie, ale opóźnił lub odrzucił wiadomość. Powtarzające się odroczenia u jednego dostawcy to sygnał problemu z reputacją, a nie z kodem.
Odpytywanie logów nie skaluje się. Brevo obsługuje webhooki transakcyjne, które w czasie rzeczywistym przesyłają na Twój endpoint zdarzenia dostarczenia, odbicia, otwarcia i skargi, i tak właśnie utrzymujesz aktualność własnych danych o wykluczeniach.
Liczba, którą trzeba obserwować, to wskaźnik skarg spamowych. Gmail, Yahoo i Microsoft wymagają od nadawców utrzymania go poniżej 0,3 procent, a Brevo zaleca monitorowanie go w Gmail Postmaster Tools. Wychodzenie z przekroczenia trwa znacznie dłużej niż niedopuszczenie do niego.
Rozwiązywanie problemów
535 5.7.8 Authentication failed
Nazwy użytkownika lub hasła nie udało się zweryfikować. Według prawdopodobieństwa:
- Użyto adresu email konta zamiast loginu SMTP w formacie
[email protected]. - Wklejono
smtp-relay.brevo.comw pole nazwy użytkownika. Brevo wskazuje to jako jedną z najczęstszych przyczyn. - Użyto klucza API zamiast klucza SMTP.
- Klucz niesie końcową spację lub złamanie wiersza z kopiowania i wklejania.
- Ustawienie szyfrowania nie pasuje do portu.
- Klucz został unieważniony po alercie bezpieczeństwa, w takim wypadku wygeneruj nowy.
525 5.7.1 Unauthorized IP address
Blokowanie po IP jest aktywne, a adres łączący się nie jest autoryzowany. Dodaj go, ale najpierw sprawdź swój rzeczywisty adres wyjściowy, jeśli aplikacja działa za NAT albo na platformie kontenerowej.
Brak odpowiedzi i brak banera
Jeśli połączenie TCP się otwiera, ale serwer nigdy nie wysyła powitania 220, uwierzytelnianie nie może się zacząć, a wina leży po Twojej stronie sieci. Firewalle korporacyjne czasem dopuszczają połączenie, a potem po cichu odrzucają ruch SMTP. AWS, Azure i Google Cloud domyślnie ograniczają wychodzący SMTP na nowych kontach. Poproś o zdjęcie tego ograniczenia albo przełącz się na port 2525.
450, platforma nieaktywowana
Błąd mówi, że Twoje konto SMTP nie zostało jeszcze aktywowane albo że Twoja platforma nadawcza jest obecnie wyłączona. Na nowym koncie wysyłka transakcyjna wymaga osobnego kroku aktywacji przez wsparcie Brevo. Na koncie działającym od dawna zwykle oznacza to zawieszenie, albo dlatego, że niezabezpieczony formularz został zaatakowany przez boty, albo dlatego, że konto wykazało oznaki przejęcia.
Nadawca odrzucony
Sprawdź trzy rzeczy: czy domena jest uwierzytelniona, czy nadawca jest zweryfikowany i czy nagłówek From nie jest Twoim loginem SMTP.
Poczta jest przyjmowana, ale ląduje w spamie
Pracuj w tej kolejności. Potwierdź, że domena nadawcza jest uwierzytelniona i że DKIM podpisuje. Potwierdź, że domena w polu From jest Twoja własna, a nie darmowego dostawcy poczty. Sprawdź wskaźnik skarg w Postmaster Tools wobec progu 0,3 procent. Treść analizuj dopiero po tych czystych sprawdzeniach, bo prawie nigdy nie jest pierwszą przyczyną.
Dedykowane adresy IP
Dedykowany adres IP pomaga tylko przy wysokim i stałym wolumenie. Trzeba go rozgrzać, zanim zaczniesz przez niego sensownie wysyłać, i potrzebuje subdomeny nadawczej, która pojawia się w nagłówkach jako domena mailed by i return path. To jedyna konfiguracja, w której Brevo dostarcza rekordy SPF i MX, obok rekordów A, CNAME, DKIM i DMARC dla tej subdomeny.
Dwa szczegóły zaskakują ludzi. Dedykowany adres IP skonfigurowany wyłącznie do poczty marketingowej kolejkuje Twoje wiadomości transakcyjne zamiast je wysyłać, więc przełącz go albo kup drugi adres. A oddzielenie routingu transakcyjnego od marketingowego wymaga puli co najmniej dwóch adresów IP z odrębnymi nadawcami, żeby słabe zaangażowanie w poczcie marketingowej nie ciągnęło w dół potwierdzeń i resetów hasła.
Jak zrobić to dobrze za pierwszym razem
Uwierzytelnij domenę, utwórz nazwany klucz SMTP, połącz się z smtp-relay.brevo.com na 587 i wyślij test prawdziwą ścieżką kodu, a nie przyciskiem w panelu. Niemal każdy późniejszy problem sprowadza się do jednej z trzech rzeczy.
- Niewłaściwe poświadczenie w polu nazwy użytkownika lub hasła.
- Ustawienia portu i szyfrowania, które ze sobą nie współgrają.
- Domena nadawcza, która nigdy nie została uwierzytelniona.
Zrób te rzeczy dobrze, a przekaźnik zniknie w tle, co jest dokładnie tym, co infrastruktura transakcyjna powinna robić.