Formularz WordPress nie wysyła maili: przyczyny i jak to naprawić
Klient dzwoni i pyta, dlaczego nikt nie odpowiedział na jego wiadomość sprzed dwóch tygodni. Zaglądasz do skrzynki: pusto. Wchodzisz na stronę, wypełniasz formularz, widzisz zielony komunikat „Dziękujemy, wiadomość została wysłana”. I nadal nic nie przychodzi.
To jeden z najczęstszych i najbardziej podstępnych problemów na stronach WordPress. Podstępny, bo formularz wygląda na sprawny. Komunikat o sukcesie oznacza tylko, że strona przekazała wiadomość dalej, a nie że ktoś ją dostał. Właściciel zwykle dowiaduje się o awarii po tygodniach, od zirytowanego klienta albo wcale.
Poniżej znajdziesz przyczyny, przez które formularz WordPress nie wysyła maili, i sposób, żeby każdą z nich sprawdzić samodzielnie.
Dlaczego WordPress nie wysyła maili
WordPress domyślnie wysyła pocztę przez funkcję PHP mail() serwera, na którym stoi strona. Nie loguje się przy tym do żadnej prawdziwej skrzynki. Z punktu widzenia Gmaila czy Onetu wygląda to tak, jakby ktoś nieznany wysyłał list z Twoim adresem na kopercie.
Tak samo działają Contact Form 7, WPForms, Elementor Forms i WooCommerce. Wszystkie korzystają z tej samej funkcji WordPressa, więc jeśli contact form 7 nie wysyła maili, to bardzo często woocommerce też nie wysyła maili o zamówieniach. Problem leży zwykle niżej niż w samej wtyczce formularza.
Siedem najczęstszych przyczyn
1. Brak uwierzytelnienia SPF i DKIM
Co się dzieje: od 1 lutego 2024 Gmail wymaga od wszystkich nadawców uwierzytelnienia domeny przez SPF lub DKIM. Yahoo zaczęło egzekwować podobne zasady w tym samym miesiącu. SPF to wpis w DNS domeny, który mówi, jakie serwery mogą wysyłać pocztę w jej imieniu. DKIM to cyfrowy podpis wiadomości. Mail wysłany z hostingu przez mail() często nie ma ani jednego, ani drugiego.
Skutek: wiadomość ląduje w spamie albo jest odrzucana, zanim dotrze do skrzynki.
Jak sprawdzić: wyślij formularz na adres w Gmailu. Otwórz wiadomość (także jeśli jest w spamie), kliknij trzy kropki obok przycisku „Odpowiedz” i wybierz „Pokaż oryginał”. Na górze zobaczysz wiersze SPF, DKIM i DMARC z wynikiem PASS albo FAIL. Każde FAIL albo brak wiersza to sygnał do poprawy.
2. Adres nadawcy z innej domeny niż strona
Co się dzieje: w ustawieniach formularza jako nadawca wpisany jest adres w stylu twojafirma@gmail.com albo adres klienta, który wypełnił formularz. Strona stoi na twojafirma.pl, a podpisuje się cudzą domeną.
Skutek: serwery pocztowe uznają to za podszywanie się i odrzucają wiadomość. Dokumentacja WooCommerce wprost zaleca nadawcę z własnej domeny zamiast publicznej skrzynki.
Jak sprawdzić: w Contact Form 7 otwórz formularz, zakładkę „Poczta” i pole „Od”. Powinien tam być adres z domeny strony, na przykład formularz@twojafirma.pl. Adres klienta wpisz w pole „Dodatkowe nagłówki” jako Reply-To, wtedy nadal odpowiesz mu jednym kliknięciem.
3. Brak wtyczki SMTP
Co się dzieje: strona wysyła przez mail() serwera zamiast przez prawdziwą skrzynkę pocztową albo usługę do wysyłki.
Skutek: nawet poprawny formularz ma słabą dostarczalność, a Ty nie masz żadnego śladu, co się z wiadomością stało.
Jak sprawdzić i naprawić: wejdź w „Wtyczki” i zobacz, czy masz zainstalowaną WP Mail SMTP, Post SMTP albo FluentSMTP. Jeśli nie, zainstaluj jedną z nich i połącz ją ze skrzynką w swojej domenie albo z usługą do wysyłki maili. Każda z nich ma przycisk wysłania wiadomości testowej i log wysłanych maili, w którym widać błędy. To najczęściej rozwiązuje problem „wordpress nie wysyła maili” za jednym zamachem.
4. Antyspam blokuje prawdziwe zgłoszenia
Co się dzieje: wtyczki antyspamowe, na przykład CleanTalk, oceniają każde zgłoszenie. Czasem uznają za spam prawdziwego klienta, bo pisze z sieci firmowej, przez VPN albo używa słów kojarzonych ze spamem.
Skutek: klient widzi komunikat o wysłaniu albo ogólny błąd, a wiadomość nigdy nie trafia do Ciebie.
Jak sprawdzić: zajrzyj do panelu wtyczki antyspamowej i przejrzyj listę zablokowanych zgłoszeń. Jeśli widzisz tam normalne zapytania od klientów, poluzuj ustawienia albo dodaj wyjątki.
5. Źle ustawiona reCAPTCHA lub Turnstile
Co się dzieje: klucze reCAPTCHA albo Cloudflare Turnstile są przypisane do innej domeny, wygasły, ktoś przeniósł stronę na nowy adres albo pomieszał wersje reCAPTCHA.
Skutek: weryfikacja kończy się błędem i formularz w ogóle nie wysyła. Czasem dzieje się to bez żadnego widocznego komunikatu.
Jak sprawdzić: wypełnij formularz w oknie prywatnym przeglądarki. Jeśli pojawi się błąd albo przycisk kręci się bez końca, sprawdź w panelu Google reCAPTCHA lub Cloudflare, czy domena strony jest na liście dozwolonych.
6. Cache strony psuje formularz
Co się dzieje: formularz WordPressa zawiera jednorazowy kod bezpieczeństwa, tak zwany nonce, który ma ograniczoną ważność. Wtyczka cache zapisuje stronę razem z tym kodem i podaje ją odwiedzającym przez długi czas.
Skutek: po jakimś czasie kod wygasa i formularz kontaktowy wordpress nie działa, choć wczoraj działał. Najgorsze, że problem pojawia się i znika razem z czyszczeniem cache.
Jak sprawdzić: wyczyść cache i od razu przetestuj formularz. Jeśli teraz działa, a następnego dnia znowu nie, wyklucz stronę z formularzem z cache albo skonfiguruj wtyczkę cache zgodnie z instrukcją wtyczki formularza.
7. Zły adres odbiorcy albo pełna skrzynka
Co się dzieje: w ustawieniach formularza wpisany jest adres byłego pracownika, adres z literówką albo skrzynka, która się zapełniła. W WooCommerce powiadomienia o zamówieniach mogą iść na adres, którego nikt nie czyta.
Skutek: mail wychodzi poprawnie, tylko trafia donikąd.
Jak sprawdzić: w Contact Form 7 sprawdź pole „Do” w zakładce „Poczta”. W WooCommerce wejdź w „WooCommerce”, „Ustawienia”, „E-maile” i sprawdź odbiorcę przy każdym typie wiadomości. Zaloguj się do skrzynki docelowej i zobacz, czy jest na niej miejsce.
Jak przetestować formularz w 10 minut
- Wyślij formularz na Gmaila. Ustaw tymczasowo odbiorcę na swój adres w Gmailu, wypełnij formularz i sprawdź skrzynkę odbiorczą oraz folder Spam.
- Sprawdź „Pokaż oryginał”. Szukasz trzech razy PASS: SPF, DKIM i DMARC.
- Zajrzyj do logu wtyczki SMTP. Jeśli wiadomość ma status błędu, log zwykle mówi, dlaczego.
- W WooCommerce sprawdź log maili. Dokumentacja WooCommerce wskazuje „WooCommerce”, „Status”, „Logi” i źródło
transactional-emails. Widać tam, czy mail o zamówieniu został wysłany, czy nie. - Przepuść maila przez mail-tester.com. Strona poda Ci jednorazowy adres. Wyślij na niego formularz, a dostaniesz ocenę i listę konkretnych problemów, w tym brakujące wpisy DNS.
Pamiętaj, że jeden udany test nic nie gwarantuje na przyszłość. Formularze psują się po aktualizacji wtyczki, zmianie hostingu, odnowieniu domeny albo zmianie w DNS. Nikt wtedy nie dostaje powiadomienia, że coś przestało działać.
Dlaczego nikt tego nie zauważa
Strona nie pokazuje błędu. Klient widzi „wysłano” i czeka. Ty nie dostajesz maila, ale nie wiesz, że powinieneś go dostać. Cisza w skrzynce wygląda jak słabszy tydzień, a nie jak awaria.
Dlatego warto sprawdzać formularze regularnie, a nie tylko raz po zbudowaniu strony. Możesz to robić ręcznie raz w tygodniu albo zostawić to narzędziu. Wtyczka Eyesite Monitor sprawdza, czy formularze na stronie naprawdę wysyłają wiadomości, i daje znać, gdy przestaną. Pilnuje też, czy strona działa i czy nikt się na nią nie włamał.
Co zrobić teraz
1. Zrób dziś test na Gmaila. Wyślij formularz ze swojej strony i sprawdź „Pokaż oryginał”. To pięć minut, a od razu wiesz, na czym stoisz.
2. Sprawdź swoją domenę skanerem. Darmowy skaner na eyesite.pl/skaner w kilkanaście sekund pokaże, czy domena ma poprawne SPF, DKIM i DMARC, czyli czy maile ze strony mają szansę dojść.
3. Zainstaluj darmową wtyczkę Eyesite Monitor. Pobierz ją tutaj. Będzie pilnować formularzy, maili i działania strony, a o problemie dowiesz się Ty, zanim zadzwoni klient.
Formularz kontaktowy to często jedyna droga, którą nowy klient do Ciebie trafia. Warto wiedzieć, że ta droga jest otwarta.
Źródła
- Google, „Wytyczne dla nadawców e-maili” (wymagania od 1 lutego 2024 dla wszystkich nadawców do kont Gmail): https://support.google.com/a/answer/81126
- Yahoo Sender Hub, „Best practices” (egzekwowanie standardów od lutego 2024): https://senders.yahooinc.com/best-practices
- Pomoc Gmaila, „Śledzenie e-maili przez pełne nagłówki” (opcja „Pokaż oryginał”): https://support.google.com/mail/answer/29436
- WooCommerce, „Email FAQ” (wp_mail, log transactional-emails, nadawca z własnej domeny, SMTP): https://woocommerce.com/document/email-faq/
- Mail Tester: https://www.mail-tester.com/

