WordPress nie wysyła maili – dlaczego wiadomości nie dochodzą?

WordPress nie wysyła maili, formularz kontaktowy potwierdza wysłanie wiadomości, ale nic nie trafia do docelowej skrzynki, a link do resetowania hasła nigdy nie przychodzi, nawet do folderu Spam? Taka sytuacja wcale nie musi oznaczać awarii Twojego WordPressa ani tym bardziej hostingu, na którym działa strona. Przyczyną może być błędna konfiguracja wtyczki odpowiadającej za wysyłkę wiadomości, ograniczenie funkcji mail() na serwerze albo nieprawidłowo skonfigurowane SMTP. Możliwych powodów jest więc kilka. Jeśli nie działa tylko jeden formularz, a inne wiadomości ze strony przychodzą prawidłowo, źródła problemu warto zacząć szukać właśnie w jego konfiguracji. Jeśli natomiast instalujesz nowego WordPressa albo regularnie otrzymywałeś wiadomości systemowe i nagle przestały przychodzić, problem może dotyczyć całego mechanizmu wysyłania poczty. WordPress nie wysyła maili? Przyjrzyjmy się więc, dlaczego wiadomości nie dochodzą i jak to naprawić.

W tym artykule zebrałem najczęstsze przyczyny problemów z wysyłaniem wiadomości z WordPressa, jak również sposoby pozwalające ustalić, gdzie szukać źródła problemu. Część z nich dotyczy konfiguracji CMS-a i wtyczek, część działania hostingu, a jeszcze inne pojawiają się już po przekazaniu wiadomości do systemu pocztowego. W osobnych poradnikach rozwijam również konkretne zagadnienia związane z SMTP, dostarczalnością poczty oraz konfiguracją poszczególnych elementów.

Po co WordPress wysyła wiadomości e-mail?

Pozwolę sobie zacząć od początku. WordPress również potrzebuje komunikować się z administratorem i użytkownikami strony. Wysyłka poczty nie służy więc wyłącznie do obsługi formularza kontaktowego. Wiadomości e-mail są zarówno częścią administracji stroną, jak i wielu dodatkowych funkcji, które możesz uruchomić za pomocą wtyczek.

CMS WordPress wykorzystuje pocztę między innymi podczas:

  • resetowania hasła i obsługi kont użytkowników,
  • wysyłania powiadomień administracyjnych i systemowych,
  • obsługi formularzy kontaktowych i zapytań ofertowych,
  • rejestracji nowych użytkowników i potwierdzania różnych operacji,
  • obsługi sklepów WooCommerce, rezerwacji, płatności i innych rozszerzeń.

Do tego dochodzą rozwiązania wykorzystujące WordPressa jako zaplecze do newsletterów, automatycznych powiadomień, systemów rezerwacyjnych, kursów internetowych, platform członkowskich czy innych aplikacji. Jak widzisz, jest tego całkiem sporo. Dlatego właśnie awaria wysyłki poczty może wyglądać bardzo różnie, mieć różne przyczyny i wywoływać zupełnie inne skutki.

Co nie działa?Gdzie szukać przyczyny?Od czego zacząć?
Nie przychodzi reset hasłaWordPress, funkcja mail(), nadawca, hostingSprawdź mechanizm resetowania hasła i zasady hostingu
Jeden formularz nie wysyła wiadomościKonfiguracja wtyczki lub formularzaSprawdź adres nadawcy i odbiorcy
Żadne wiadomości z WordPressa nie dochodząMechanizm wysyłki, mail() lub SMTPSprawdź sposób wysyłania poczty
SMTP zwraca błądSerwer, port, login, hasło, szyfrowanieSprawdź konfigurację SMTP
WordPress informuje o wysłaniu, ale wiadomości nie maDostarczenie, filtry, spam, serwer odbiorcySprawdź, co stało się po wysłaniu
Maile trafiają do spamuUwierzytelnienie domeny, nadawca, reputacjaSprawdź SPF, DKIM, DMARC i nadawcę

Na tym etapie powinieneś już zauważyć, dlaczego stwierdzenie „WordPress nie wysyła maili” niewiele mówi o rzeczywistej przyczynie problemu. Jeśli skontaktujesz się z dostawcą usługi hostingowej, warto przygotować się do takiej rozmowy lepiej niż tylko przekazać informację, że „poczta nie działa”.

Jak WordPress wysyła wiadomości?

No właśnie, od tego warto zacząć analizowanie problemu. WordPress sam w sobie nie jest serwerem pocztowym. Potrafi przygotować wiadomość, określić jej odbiorcę, temat, treść czy nagłówki, ale potrzebuje jeszcze mechanizmu, który rzeczywiście przekaże ją dalej.

WordPress korzysta w tym celu z funkcji wp_mail(). Ta wykorzystuje bibliotekę PHPMailer, która w standardowej konfiguracji WordPressa korzysta z funkcji PHP mail(). Dopiero środowisko serwera hostingowego przejmuje tak przygotowaną wiadomość i przekazuje ją do dalszej wysyłki.

W dużym uproszczeniu wygląda to tak:

  • WordPress → wp_mail() → PHPMailer → PHP mail() → infrastruktura pocztowa serwera → serwer odbiorcy

Czy hosting może blokować funkcję mail()?

Tak. Operator hostingu może zdecydować, czy funkcja PHP mail() jest dostępna, jakie obowiązują dla niej ograniczenia i na jakich zasadach aplikacja może przekazywać wiadomości do wysyłki.

Na wielu usługach hostingowych nie znajdziesz w panelu żadnego przełącznika „włącz funkcję mail”. Jeżeli operator udostępnia ją domyślnie, WordPress po prostu z niej korzysta. W innym przypadku usługodawca może ograniczyć wysyłkę, wymagać określonego adresu nadawcy, zastosować limity albo całkowicie wyłączyć PHP mail() dla danej usługi.

Takie różnice występują także pomiędzy ofertami jednego rynku. Przykładowo Home.pl stosuje zabezpieczenia uniemożliwiające określone formy nieautoryzowanej wysyłki, natomiast w usłudze Hosting WP firmy WEDOS funkcja PHP mail() nie jest obsługiwana i do wysyłania wiadomości należy wykorzystać SMTP.

Samo ograniczenie funkcji mail() nie oznacza więc awarii ani gorszej jakości hostingu. Jest to decyzja dotycząca sposobu obsługi poczty i bezpieczeństwa infrastruktury. Zainfekowana strona internetowa albo podatny skrypt potrafią zostać wykorzystane do masowego rozsyłania spamu, dlatego operatorzy stosują różne mechanizmy ograniczające takie nadużycia.

Gdzie w tym wszystkim pojawia się SMTP?

Zamiast polegać wyłącznie na lokalnej funkcji mail(), WordPress można skonfigurować tak, aby wysyłał wiadomości przez konkretny serwer SMTP. Przypomina to konfigurację skrzynki w programie pocztowym: podajesz serwer poczty wychodzącej, port, sposób szyfrowania oraz dane uwierzytelniające konkretne konto.

Jeśli chcesz najpierw uporządkować podstawy, przeczytaj również: co to jest SMTP i jak działa.

W przypadku SMTP schemat wygląda więc trochę inaczej:

  • WordPress → PHPMailer → uwierzytelnione połączenie SMTP → serwer pocztowy → odbiorca

SMTP jest rozwiązaniem rekomendowanym przede wszystkim dlatego, że daje większą kontrolę nad nadawcą, serwerem odpowiedzialnym za wysyłkę oraz samą konfiguracją połączenia. Nie oznacza jednak, że PHP mail() z definicji działa źle. Na poprawnie skonfigurowanym hostingu może przez lata obsługiwać zwykłe wiadomości systemowe bez żadnych problemów.

Jakie wiadomości z WordPressa mogą przestać dochodzić?

Wyżej wymieniłem już kilka rodzajów wiadomości generowanych przez WordPressa, ale warto doprecyzować, jak poważna może być sprawa w momencie, kiedy mechanizm wysyłki przestanie działać.

Problemy mogą dotyczyć zarówno podstawowych funkcji CMS-a, jak i rozwiązań dodanych przez wtyczki. Nie przychodzi link do resetowania hasła, administrator nie dostaje informacji o nowym użytkowniku, formularz kontaktowy przestaje przekazywać zapytania, a sklep nie wysyła klientowi potwierdzenia zamówienia. Wszystkie te objawy mogą mieć wspólne źródło.

Konsekwencje zależą od charakteru witryny. Na niewielkim blogu brak jednej wiadomości administracyjnej może przez dłuższy czas pozostać niezauważony. W sklepie internetowym albo serwisie obsługującym rejestrację użytkowników brak poczty zaczyna wpływać bezpośrednio na klientów, sprzedaż i możliwość korzystania ze strony.

Najważniejsze pytanie brzmi więc: czy przestała działać jedna konkretna funkcja, czy wszystkie wiadomości wychodzące z WordPressa? Ta odpowiedź mocno zawęża dalsze poszukiwania.

Najczęstsze przyczyny problemów z wysyłką maili w WordPressie

1. Błędny adres e-mail w WordPressie lub formularzu

Zacznij od rzeczy najprostszych. Jeżeli nie działa jeden formularz, sprawdź jego konfigurację, adres odbiorcy oraz adres nadawcy. Literówka, stara skrzynka pozostawiona po wdrożeniu strony albo adres, który już nie istnieje, wystarczą, aby wiadomości nie trafiały tam, gdzie powinny.

Sprawdź również adres administracyjny WordPressa oraz ustawienia konkretnej wtyczki. Nie zakładaj od razu, że winny jest serwer. Jeśli kilka innych formularzy i wiadomości systemowych działa prawidłowo, problem po stronie całego hostingu jest znacznie mniej prawdopodobny.

2. Formularz używa nieprawidłowego adresu nadawcy

To bardzo częsty błąd w formularzach kontaktowych. Załóżmy, że użytkownik wpisuje swój adres jan.kowalski@gmail.com. Formularz nie powinien automatycznie umieszczać tego adresu w polu From i próbować wysłać wiadomości z Twojego serwera tak, jakby rzeczywistym nadawcą był Gmail.

Prawidłowa konfiguracja wygląda raczej tak:

  • From: formularz@twojadomena.pl
  • Reply-To: jan.kowalski@gmail.com

Dzięki temu wiadomość jest wysyłana przez adres związany z Twoją stroną, ale po wybraniu funkcji „Odpowiedz” program pocztowy nadal skieruje odpowiedź do osoby, która wypełniła formularz.

Jeżeli chcesz lepiej zrozumieć tę różnicę, zobacz: co oznacza pole From w wiadomości e-mail.

3. Funkcja mail() jest wyłączona albo ograniczona

Jeśli WordPress korzysta z domyślnego mechanizmu wysyłki, jego działanie zależy również od konfiguracji serwera. Operator może ograniczyć liczbę wiadomości, wymagać poprawnego nadawcy, blokować określony sposób wysyłania albo całkowicie wyłączyć funkcję PHP mail().

Problem jest szczególnie prawdopodobny wtedy, gdy przeniosłeś stronę na inny hosting i od tego momentu przestały działać wszystkie wiadomości. Ten sam WordPress może bowiem trafić do środowiska, w którym obowiązują inne reguły wysyłania poczty.

4. SMTP jest skonfigurowane nieprawidłowo

Instalacja wtyczki SMTP nie kończy konfiguracji. Trzeba jeszcze wskazać prawidłowy serwer, port, metodę szyfrowania, login, hasło i adres nadawcy.

Jeżeli któryś z tych elementów jest błędny, połączenie z serwerem pocztowym nie zostanie poprawnie nawiązane albo serwer odrzuci próbę wysłania wiadomości. Właśnie dlatego wtyczki SMTP często okazują się przydatne również podczas diagnostyki: błąd uwierzytelnienia, niedostępny serwer czy niewłaściwy port dają znacznie konkretniejszą informację niż samo „mail nie dotarł”.

5. Strona i poczta działają na różnych serwerach

Strona WWW nie musi korzystać z tego samego serwera co poczta. WordPress może działać na zwykłym hostingu, podczas gdy firmowe skrzynki są obsługiwane przez Microsoft 365, Google Workspace albo zupełnie innego operatora.

W takim układzie trzeba zwrócić uwagę między innymi na rekordy MX, sposób trasowania poczty oraz serwer wykorzystywany do wysyłania wiadomości przez stronę. Zdarza się, że sam WordPress działa prawidłowo, ale lokalny serwer traktuje domenę tak, jakby jej poczta również znajdowała się na tym samym hostingu.

Więcej o takim układzie przeczytasz w poradniku: czy poczta i strona WWW mogą działać na różnych serwerach?

6. Wiadomość wychodzi z WordPressa, ale trafia do spamu albo zostaje odrzucona

To już nie jest typowy problem „WordPress nie wysyła maili”. WordPress wykonał swoje zadanie, wiadomość opuściła stronę, ale pojawił się problem z jej dostarczeniem.

Znaczenie mają wtedy między innymi adres nadawcy, konfiguracja SPF, DKIM i DMARC, reputacja infrastruktury wysyłającej oraz zasady stosowane przez serwer odbiorcy. Duzi dostawcy poczty coraz dokładniej sprawdzają, czy wiadomość rzeczywiście pochodzi z infrastruktury uprawnionej do wysyłania w imieniu danej domeny.

Nie oznacza to przy tym, że korzystanie z PHP mail() automatycznie wyklucza poprawne SPF czy DKIM. Operator hostingu może przekazać wiadomość przez prawidłowo skonfigurowany system pocztowy i odpowiednio ją uwierzytelnić. Problem polega na tym, że użytkownik WordPressa ma wtedy znacznie mniejszą kontrolę nad tym procesem niż przy świadomie skonfigurowanej usłudze SMTP.

Jeśli wiadomość została oznaczona jako niechciana, pomocny będzie również artykuł spam – co to jest i dlaczego wiadomości trafiają do spamu?

Dlaczego WordPress na Home.pl może nie wysłać resetu hasła?

Home.pl jest dobrym przykładem pokazującym, że problem z wysyłką nie musi oznaczać, że coś „nie działa”. W tym przypadku zachowanie WordPressa spotyka się z zabezpieczeniem zastosowanym przez operatora hostingu.

Jeśli WordPress nie otrzyma innego adresu nadawcy, domyślnie tworzy go w postaci:

  • wordpress@twojadomena.pl

Home.pl ogranicza możliwość nieautoryzowanego wysyłania wiadomości za pomocą funkcji mail(). Jeżeli konto wordpress@twojadomena.pl nie istnieje na serwerze, wiadomość związana na przykład z odzyskiwaniem hasła może nie zostać wysłana.

Nie jest to awaria WordPressa ani błąd działania Home.pl. To skutek zastosowanych zasad bezpieczeństwa, których zadaniem jest ograniczenie możliwości wysyłania wiadomości przez niezweryfikowanego nadawcę.

Oficjalnie opisanym przez Home.pl rozwiązaniem jest utworzenie na tym samym serwerze konta pocztowego:

  • wordpress@twojadomena.pl

Dzięki temu nadawca używany domyślnie przez WordPressa może zostać prawidłowo rozpoznany przez serwer. Drugim rozwiązaniem jest skonfigurowanie w WordPressie uwierzytelnionej wysyłki SMTP z wykorzystaniem istniejącego konta pocztowego.

Jeżeli problem dotyczy właśnie odzyskiwania dostępu do panelu, zobacz również mój osobny poradnik: nie mogę zresetować hasła do WordPressa.

WordPress wysłał maila, ale wiadomość nie dotarła

To jeden z ważniejszych elementów całego problemu. Informacja o poprawnym wykonaniu wysyłki przez WordPressa nie jest tym samym co potwierdzenie dostarczenia wiadomości do skrzynki odbiorcy.

Funkcja wp_mail() może zakończyć działanie powodzeniem, ponieważ mechanizm odpowiedzialny za wysyłkę przyjął wiadomość bez zgłoszenia błędu. Wiadomość nadal musi jednak przejść przez kolejne elementy infrastruktury.

Możemy przedstawić to tak:

WordPress → serwer wysyłający → Internet → serwer odbiorcy → filtry antyspamowe → skrzynka odbiorcza

Na każdym z tych etapów może wydarzyć się coś innego. Wiadomość może zostać chwilowo zatrzymana, odrzucona, zakwalifikowana jako spam albo skierowana do innego folderu.

Jeżeli formularz wyświetla więc komunikat „wiadomość została wysłana”, a skrzynka pozostaje pusta, nie zakładaj automatycznie, że formularz kłamie. Mógł prawidłowo przekazać wiadomość do dalszej obsługi, ale nie posiada informacji o jej ostatecznym losie.

Jak sprawdzić, dlaczego WordPress nie wysyła maili?

Wspominałem już, że podczas kontaktu z dostawcą hostingu sama informacja „WordPress nie wysyła maili” daje administratorowi niewiele danych. Dlatego zanim wyślesz zgłoszenie, sprawdź kilka rzeczy.

Z dużym prawdopodobieństwem sam znajdziesz źródło problemu. Jeśli nie, zbierzesz przynajmniej informacje, które pozwolą obsłudze technicznej znacznie szybciej ustalić, co faktycznie nie działa.

1. Sprawdź, czy nie działa jedna wiadomość, czy wszystkie

Wyślij wiadomość z formularza, spróbuj zresetować hasło użytkownika albo skorzystaj z testu wysyłki dostępnego we wtyczce SMTP.

Jeżeli nie działa tylko jeden formularz, zacznij od niego. Jeżeli nie dochodzi formularz, reset hasła, powiadomienia administratora i inne wiadomości, szukaj problemu szerzej.

2. Sprawdź adres odbiorcy i nadawcy

Zweryfikuj adres administratora WordPressa oraz ustawienia formularzy i innych wtyczek. Sprawdź również, czy nie próbujesz wysyłać wiadomości z obcego adresu w polu From.

3. Wyślij test na inną skrzynkę

Jeśli dotychczas wszystkie testy wykonywałeś na jeden adres, wyślij wiadomość również na skrzynkę u innego operatora. Dzięki temu łatwiej ustalisz, czy problem występuje jeszcze po stronie WordPressa i hostingu, czy dopiero po stronie konkretnego systemu odbierającego pocztę.

4. Sprawdź folder Spam

Jeżeli wiadomość znajduje się w spamie, masz już ważną informację: została wysłana i dotarła do infrastruktury odbiorcy. W takim przypadku nie szukasz już awarii funkcji wysyłającej, tylko problemu z dostarczalnością i wiarygodnością wiadomości.

5. Sprawdź sposób wysyłki na hostingu

Poszukaj w dokumentacji operatora informacji o PHP mail(), poczcie wysyłanej ze skryptów, limitach wiadomości i wymaganiach dotyczących adresu nadawcy.

Nie zdziw się, jeśli w panelu hostingu nie znajdziesz przełącznika pozwalającego samodzielnie aktywować funkcję mail(). W wielu środowiskach jest to ustawienie kontrolowane bezpośrednio przez administratora serwera.

6. Jeśli korzystasz z SMTP, wykonaj test połączenia

Sprawdź wynik testu i dokładnie przeczytaj komunikat błędu. Nieprawidłowe hasło, błędny port czy brak połączenia z serwerem to trzy zupełnie inne problemy, mimo że dla użytkownika każdy z nich kończy się tym samym: wiadomość nie przychodzi.

7. Sprawdź, gdzie działa poczta dla domeny

Jeżeli strona i poczta znajdują się u różnych dostawców, sprawdź rekordy MX i sposób kierowania poczty. Ustal też, przez jaki serwer WordPress faktycznie próbuje wysyłać wiadomości.

Po wykonaniu tych testów zgłoszenie do operatora może wyglądać zupełnie inaczej niż „nie działają mi maile”. Możesz przekazać, że reset hasła i formularz nie działają, PHP mail() nie zwraca oczekiwanego efektu, SMTP działa albo nie działa, testowano kilku odbiorców i problem występuje również poza własną domeną. To są informacje, z którymi administrator jest już w stanie pracować.

Czy warto skonfigurować SMTP w WordPressie?

Tak, szczególnie jeśli wiadomości wysyłane przez stronę mają znaczenie dla jej działania. Dotyczy to sklepów internetowych, stron firmowych, systemów rezerwacyjnych, serwisów z kontami użytkowników i wszystkich miejsc, w których niedostarczony e-mail oznacza utracone zapytanie albo problem klienta.

Nie dlatego, że funkcja PHP mail() sama w sobie działa źle. Jej ograniczeniem jest przede wszystkim to, że pozostawia dużą część procesu konfiguracji i wysyłki środowisku serwera hostingowego. SMTP pozwala świadomie wskazać serwer pocztowy, konto nadawcy i sposób uwierzytelnienia.

SMTP ułatwia również diagnostykę. Jeśli połączenie nie działa, zazwyczaj otrzymasz informację o problemie z uwierzytelnieniem, połączeniem, certyfikatem, portem czy nadawcą. Przy zwykłym PHP mail() znacznie większa część procesu pozostaje poza WordPressem.

Nie traktowałbym jednak SMTP jako rozwiązania wszystkich problemów z pocztą. Nadal możesz błędnie skonfigurować SPF, DKIM lub DMARC, podać nieprawidłowy adres odbiorcy albo trafić na filtr antyspamowy. SMTP daje po prostu większą kontrolę nad pierwszą i bardzo ważną częścią procesu wysyłania wiadomości.

Jeżeli planujesz natomiast używać WordPressa do wysyłania newslettera lub większej kampanii, sprawa wygląda jeszcze inaczej. W takim przypadku warto oddzielić zwykłe wiadomości transakcyjne i systemowe od korespondencji masowej. Szerzej opisuję to w artykule jak wysyłać newsletter do klientów – własny serwer, SMTP czy system mailingowy?