Skip to content
🔧 Dlaczego WordPress nie wysyła e-maili i jak to naprawić

🔧 Dlaczego WordPress nie wysyła e-maili i jak to naprawić

Sprawdził Pan pocztę, a tam pusto. Ani listu z resetem hasła, ani powiadomienia o zamówieniu, ani testowej wiadomości z formularza kontaktowego. Klienci piszą do wsparcia, a odpowiedzi nie docierają. WordPress milczy i nie wiadomo, o co chodzi.

Problem jest boleśnie znajomy każdemu, kto uruchamiał stronę na WordPressie. Domyślny serwer pocztowy działa przez mail(), wbudowaną funkcję PHP. Dostawcy hostingu często ją blokują, a listy trafiają do spamu albo nie są wysyłane wcale.

Spoiler: da się to naprawić w 15-20 minut, konfigurując serwer SMTP. Dalej znajdzie Pan szczegółową analizę przyczyn, diagnostykę i dwa sprawdzone sposoby konfiguracji: przez Gmail API oraz przez Mailgun. Bez paniki, z ilustracjami.

💡 Szybki przegląd:

  • Sprawdzamy, czy serwer pocztowy WordPressa działa, wtyczka Check Email w minutę pokaże rzeczywisty obraz
  • Dowiadujemy się, dlaczego mail() jest zawodny i jak SMTP rozwiązuje problem
  • Konfigurujemy Gmail SMTP z OAuth 2.0, krok po kroku, od konsoli Google do zielonego statusu
  • Podłączamy Mailgun przez WP Mail SMTP, dla stron o większym ruchu, które potrzebują ponad 100 listów na dobę
  • Omawiamy częste pytania: dlaczego listy trafiają do spamu, który port wybrać, co zrobić z błędem uwierzytelniania

Dlaczego WordPress nie wysyła listów

WordPress domyślnie używa funkcji wp_mail(), która wewnętrznie wywołuje funkcję PHP mail(). Problem w tym, że mail() to najprostszy mechanizm bez uwierzytelniania. Współczesne serwisy pocztowe, takie jak Gmail, Yahoo i Outlook, wymagają szyfrowania i weryfikacji nadawcy. Bez nich list jest albo blokowany przez hosting, albo oznaczany jako spam przez stronę odbierającą.

Drugą częstą przyczyną jest brak rekordów DKIM i SPF w DNS. Są to cyfrowe podpisy, które informują serwery pocztowe: „nadawca jest prawdziwy, list nie jest fałszywy". Bez nich ten sam Gmail wyśle Pana wiadomość prosto do folderu „Spam".

Wreszcie, winne mogą być wtyczki. Niektóre rozwiązania antyspamowe i wtyczki formularzy kontaktowych przechwytują kolejkę listów i blokują „podejrzane" wysyłki. Dotyczy to szczególnie masowych wysyłek, do których mail() zasadniczo się nie nadaje.

Jak sprawdzić działanie serwera pocztowego WordPress

Zanim przejdzie Pan do ustawień SMTP, proszę wykluczyć wariant z martwym mail(). Wtyczka Check Email robi dokładnie to: wysyła testowy list przez standardowy mechanizm WordPressa i pokazuje wynik.

Proszę zainstalować Check Email z repozytorium WordPress (Wtyczki → Dodaj nową → wpisać „Check Email"), aktywować i przejść do Narzędzia → Check Email. Proszę wpisać swój adres, kliknąć „Send test email", a po kilku sekundach zobaczy Pan raport.

Raport wtyczki Check Email po testowym wysłaniu

Proszę sprawdzić foldery „Odebrane" i „Spam". Jeśli list dotarł, mail() działa i problem leży w konkretnej wtyczce (formularz kontaktowy, WooCommerce). Proszę skontaktować się ze wsparciem tej wtyczki. Jeśli listu nie ma, mail() jest zablokowany przez hosting, potrzebny jest SMTP.

Jak skonfigurować SMTP przez Gmail w WordPressie

SMTP (Simple Mail Transfer Protocol) to protokół z uwierzytelnianiem i szyfrowaniem. W przeciwieństwie do gołego mail(), listy wysyłane przez SMTP przechodzą weryfikację autentyczności, nie są blokowane przez hosting i rzadko trafiają do spamu.

Pierwszy sposób to wtyczka Gmail SMTP, która łączy WordPressa bezpośrednio z Pana kontem Google przez OAuth 2.0. Ma ona ponad 100 opinii na WordPress.org i regularne aktualizacje. Darmowa wersja pozwala wysyłać do 100 listów na dobę, co dla niewielkiej strony czy bloga jest wystarczające.

Proszę zainstalować Gmail SMTP z oficjalnego repozytorium WordPress, aktywować.

Strona wtyczki Gmail SMTP na WordPress.org

Następnie potrzebna jest Google Cloud Console. Proszę przejść na console.cloud.google.com, utworzyć nowy projekt.

Tworzenie nowego projektu w Google Cloud Console

W bocznym menu proszę wybrać „APIs & Services" → „Credentials", kliknąć „Create Credentials" i wybrać „OAuth client ID". System poprosi o skonfigurowanie ekranu zgody, proszę wskazać typ „External" i wypełnić obowiązkowe pola (nazwa aplikacji, email wsparcia). Proszę kliknąć „Save and Continue".

Konfiguracja OAuth client ID w konsoli Google Cloud

Proszę wrócić do tworzenia OAuth client ID: typ aplikacji „Web application", nazwa „Gmail SMTP".

Formularz tworzenia aplikacji internetowej w Google Cloud Console

Teraz proszę przełączyć się z powrotem do panelu administracyjnego WordPressa: w ustawieniach wtyczki Gmail SMTP proszę skopiować Authorized Redirect URL.

Konfiguracja wtyczki Gmail SMTP z adresem URL przekierowania

Proszę wrócić do konsoli Google, wkleić skopiowany adres URL w pole „Authorized redirect URIs" i zapisać. Po zapisaniu pojawi się okno z Client ID i Client Secret, proszę skopiować obie wartości i wkleić je w odpowiednie pola wtyczki.

Proszę podać adres Gmail, z którego będą wysyłane wiadomości (ten sam, na który zakładano projekt), wypełnić pole „From Email Address", ustawić „From Name" (nazwę Państwa witryny). Port SMTP, 587 dla TLS. Jeśli korzystają Państwo z certyfikatu SSL, należy ustawić 465. Proszę kliknąć „Save Changes", następnie „Grant Permission" i przejść uwierzytelnianie Google.

Konfiguracja wtyczki Gmail SMTP z polami Client ID i Client Secret

Po pomyślnym udzieleniu uprawnień we wtyczce zaświeci się zielony status „Connected". Proszę wysłać wiadomość testową, jeśli dotrze, wszystko jest gotowe.

Jak skonfigurować Mailgun do wysyłania wiadomości w WordPress

Jeśli witryna potrzebuje ponad 100 wiadomości na dobę i zależy Państwu na niezawodnej infrastrukturze dostarczania, warto zwrócić uwagę na Mailgun. Jest to usługa pocztowa dla deweloperów z bezpłatnym planem do 100 wiadomości dziennie (wiadomości przychodzące bezpłatnie), a plany płatne zaczynają się od 35 USD miesięcznie za 50 000 wiadomości. Główną zaletą jest szczegółowa analityka dostarczania: widać, czy wiadomość została otwarta i czy trafiła do spamu.

Panel konfiguracji domeny w serwisie Mailgun

Proszę zarejestrować się na mailgun.com. Po utworzeniu konta należy dodać domenę, Mailgun zaproponuje wprowadzenie subdomeny (na przykład mg.vash-sait.ru) i przekaże rekordy DNS: TXT do weryfikacji, MX do trasowania wiadomości i CNAME do śledzenia otwarć.

Proszę zalogować się do panelu hostingu (cPanel, ISPmanager lub podobny), otworzyć edytor DNS i dodać rekordy otrzymane od Mailgun:

  • Rekord TXT: Name, Państwa subdomena, Type, TXT, TTL, 14400, TXT Data, wartość z panelu Mailgun
  • Rekord MX: w sekcji „MX Entry" proszę wpisać priorytet i destination z Mailgun
  • CNAME: do śledzenia otwarć i kliknięć

DNS aktualizuje się od kilku minut do 48 godzin. Status należy sprawdzać w sekcji „Domains" w panelu Mailgun, gdy zaświeci się „Active", można przejść dalej.

Aby połączyć Mailgun z WordPress, proszę zainstalować WP Mail SMTP, najpopularniejszą wtyczkę SMTP z ponad 3 milionami aktywnych instalacji. Proszę przejść do Settings → WP Mail SMTP, w polu „From Email" podać adres w Państwa domenie, w polu „From Name" nazwę witryny. W polu „Mailer" proszę wybrać „Mailgun".

Konfiguracja połączenia Mailgun we wtyczce WP Mail SMTP

Proszę wkleić Private API Key z panelu Mailgun (sekcja „API Keys") oraz zarejestrowaną nazwę domeny. Należy włączyć opcję „Set the return path to match the From Email", co wyrównuje adres zwrotny i zmniejsza prawdopodobieństwo trafienia do spamu. Proszę kliknąć „Save Settings" i wysłać test przez zakładkę „Email Test".

Instrukcja wideo: konfiguracja SMTP w WordPress

Jeśli wygodniej jest Państwu oglądać niż czytać, oto samouczek wideo z konfiguracji SMTP w WordPress, od instalacji wtyczki do pierwszej wysłanej wiadomości:

⁉️🤔 Często zadawane pytania

Dlaczego e-maile z WordPressa trafiają do spamu, nawet gdy SMTP jest skonfigurowane?

Najczęściej problemem jest brak rekordów SPF i DKIM w DNS domeny. Bez nich serwer pocztowy odbiorcy nie może zweryfikować, że to właśnie Pana/Pani serwer ma prawo wysyłać e-maile z tej domeny. Proszę dodać rekord TXT SPF (v=spf1 include:_spf.google.com ~all dla Gmaila lub analogiczny dla Mailguna) oraz klucz DKIM z panelu usługi pocztowej. Drugi czynnik to reputacja IP: na tanim hostingu adres IP mógł być wcześniej wykorzystywany do wysyłania spamu.

Który port SMTP wybrać: 587 czy 465?

Port 587 z TLS to nowoczesny standard, zalecany przez IETF do wysyłania e-maili przez klienta. Port 465 z SSL to przestarzała alternatywa, wciąż obsługiwana przez wielu dostawców ze względu na kompatybilność. Proszę ustawić 587 z TLS, chyba że usługa pocztowa wyraźnie wymaga 465.

Wtyczka Gmail SMTP wyświetla błąd uwierzytelniania. Co robić?

Trzy najczęstsze przyczyny: niezgodność adresów URL przekierowania (proszę sprawdzić, czy w konsoli Google i we wtyczce widnieje ten sam adres), aplikacja w Google Cloud ma status „Testing" (należy zmienić na „Production" lub dodać swój Gmail do listy użytkowników testowych) albo włączone jest uwierzytelnianie dwuskładnikowe Google bez hasła aplikacji (należy utworzyć hasło aplikacji w ustawieniach bezpieczeństwa Google).

Czy można wysyłać masowe newslettery przez Gmail SMTP?

Nie. Gmail ma ścisłe limity: 100 e-maili na dobę przez wtyczkę Gmail SMTP, do 2000 przez Google Workspace. Do e-mail marketingu i regularnych wysyłek masowych proszę używać Mailguna, Brevo (dawniej Sendinblue) lub SendGrid, które oferują integracje z WordPressem i dedykowaną infrastrukturę dostarczania.

Czy płatny plan Mailguna jest potrzebny dla małej strony?

Darmowy plan Mailguna (100 e-maili dziennie) wystarcza przeciętnej stronie: powiadomienia WooCommerce o zamówieniach, resetowanie haseł, potwierdzenia rejestracji, e-maile z formularza kontaktowego. Płatny plan ma sens, gdy dzienny wolumen przekracza setkę lub potrzebna jest analityka otwarć z przechowywaniem logów dłużej niż 24 godziny.

Dlaczego nie należy polegać na wbudowanej funkcji mail() w WordPressie?

Funkcja mail() nie uwierzytelnia nadawcy, nie szyfruje połączenia i nie dodaje podpisów DKIM/SPF. Większość dostawców hostingu albo blokuje ją na poziomie serwera (ze względu na ryzyko ataków spamowych), albo przepuszcza ruch przez współdzielone IP o niskiej reputacji. Rezultat: e-maile w znacznej części przypadków nie docierają, a te, które docierają, często są oznaczane jako spam.

Czy warto przejść na SMTP już teraz

Jeśli ze strony nie wychodzą e-maile resetowania hasła, klienci nie otrzymują powiadomień o zamówieniach, a formularz kontaktowy milczy, odpowiedź jest jednoznaczna: SMTP jest potrzebny dziś. To nie jest pytanie „czy warto", to pytanie „który konkretnie".

Dla osobistego bloga i wizytówki wystarczy połączenie Gmail SMTP + Pana/Pani konto Gmail. Konfiguruje się w 20 minut i można zapomnieć. Dla strony z produktami, kursami lub użytkownikami proszę wybrać WP Mail SMTP + Mailgun: darmowy plan pokrywa potrzeby typowego sklepu internetowego, a analityka dostarczania podpowie, jeśli coś pójdzie nie tak.

Proszę nie odkładać tego na później. Podczas gdy czyta Pan/Pani ten akapit, czyjś klient nie otrzymał e-maila z potwierdzeniem. SMTP rozwiązuje to raz na zawsze.