Najczęściej formularz kontaktowy w WordPressie nie wysyła wiadomości przez blokadę funkcji mail() na hostingu, błędnie ustawiony adres nadawcy lub brak konfiguracji SMTP i rekordów DNS (SPF, DKIM, DMARC).
Najpewniejszym rozwiązaniem jest przejście na wysyłkę przez SMTP, poprawna konfiguracja pól To / From / Reply-To w formularzu oraz weryfikacja ustawień serwera i domeny.
Dlaczego formularz w WordPressie „milczy”? – krótki wstęp
- Dlaczego formularz w WordPressie „milczy”? – krótki wstęp
- Szybka diagnostyka – zanim zaczniesz „naprawiać” WordPressa
-
Najczęstsze przyczyny – co zwykle jest zepsute?
- Hosting blokuje funkcję mail() w PHP
- Źle ustawiony adres nadawcy (pole „From”)
- Literówka lub zły adres odbiorcy (pole „To”)
- Brak lub błędna konfiguracja rekordów DNS (SPF, DKIM, DMARC, MX)
- Stara wersja PHP / oprogramowania serwera
- Konflikt wtyczek lub problem z motywem
- Zbyt agresywne zabezpieczenia antyspamowe
- Krok 1 – poprawna konfiguracja formularza (To / From / Reply-To)
- Krok 2 – sprawdź, czy hosting nie blokuje funkcji mail()
- Krok 3 – konfiguracja SMTP w WordPressie (najskuteczniejsze rozwiązanie)
- Krok 4 – ustawienia DNS: SPF, DKIM, DMARC i MX
- Krok 5 – aktualizacje, konflikty wtyczek i zabezpieczenia
- Krok 6 – logi maili i testy na różnych urządzeniach
- Dobre praktyki na przyszłość
Formularz kontaktowy, który nie wysyła maili, to jeden z najczęstszych problemów właścicieli stron na WordPressie – dotyczy to zarówno prostych blogów, jak i sklepów WooCommerce. Często użytkownik widzi komunikat „Wiadomość została wysłana”, ale e-mail nie trafia do skrzynki odbiorczej – albo w ogóle nie wychodzi z serwera, albo jest odrzucany po drodze.
W tym poradniku dowiesz się, jak zdiagnozować problem i skutecznie go naprawić. Oto plan działania:
- jak sprawdzić, czy mail faktycznie nie dochodzi,
- jak poprawnie ustawić formularz (to / from / reply-to),
- jak skonfigurować wysyłkę przez SMTP,
- jak zadbać o rekordy DNS: SPF, DKIM, DMARC,
- jak wykryć konflikty wtyczek i problemy po stronie hostingu.
Szybka diagnostyka – zanim zaczniesz „naprawiać” WordPressa
Zanim uznasz, że formularz jest zepsuty, wykonaj kilka prostych testów. Najpierw sprawdź folder Spam/Niechciane oraz zakładki typu „Oferty” czy „Inne” (np. w Gmailu) – wiele wiadomości trafia tam z powodu braku SPF/DKIM lub nieufności serwera pocztowego wobec nadawcy.
Przetestuj wysyłkę z innych formularzy i akcji WordPressa
Sprawdź, czy WordPress w ogóle potrafi wysyłać e-maile: wyślij wiadomość z innego formularza (np. rejestracja, newsletter), a następnie uruchom reset hasła administratora – powinien przyjść e-mail z linkiem resetującym.
Jeśli żaden e-mail nie dochodzi, problem leży po stronie wysyłki (hosting, funkcja mail(), SMTP, DNS). Jeśli inne maile dochodzą, a tylko kontakt nie – skup się na konfiguracji samego formularza.
Najczęstsze przyczyny – co zwykle jest zepsute?
Hosting blokuje funkcję mail() w PHP
Wielu dostawców hostingu blokuje lub ogranicza funkcję mail() w PHP ze względów bezpieczeństwa i antyspamu. W takiej sytuacji wiadomości z formularza zwykle w ogóle nie są wysyłane, dlatego najstabilniejszym rozwiązaniem jest przejście na SMTP.
Źle ustawiony adres nadawcy (pole „From”)
Wtyczki formularzy (np. Contact Form 7, WPForms, Ninja Forms) pozwalają ustawić: To (Odbiorca) – dokąd wysłać wiadomość, oraz From (Nadawca) – z jakiego adresu wychodzi mail. Jeśli w polu From wpiszesz prywatny adres z Gmaila lub z innej domeny niż Twoja, wiele serwerów uzna taki mail za podejrzany i wrzuci do spamu lub go odrzuci.
Najbezpieczniej używać adresu e-mail z własnej domeny i hostingu, np. skrzynki technicznej przypisanej do strony WWW.
Literówka lub zły adres odbiorcy (pole „To”)
Zdarza się banalny błąd: odbiorca ustawiony jest z literówką lub wskazuje na nieistniejącą skrzynkę. Efekt – formularz „wysyła”, ale żaden mail nie trafia do Ciebie, bo nie ma dokąd.
Brak lub błędna konfiguracja rekordów DNS (SPF, DKIM, DMARC, MX)
Serwery pocztowe sprawdzają, czy Twoja domena ma prawo wysyłać wiadomości z konkretnego serwera. Najważniejsze rekordy to:
- MX – wskazuje serwery obsługujące pocztę dla Twojej domeny;
- SPF – określa serwery, które mogą wysyłać maile w imieniu domeny;
- DKIM – dodaje podpis kryptograficzny, który potwierdza autentyczność wiadomości;
- DMARC – definiuje politykę traktowania maili niespełniających reguł SPF/DKIM.
Brak tych rekordów lub zła konfiguracja powoduje, że część wiadomości nie dochodzi lub trafia do spamu.
Stara wersja PHP / oprogramowania serwera
Starsze wersje PHP i pakietów serwerowych bywają niekompatybilne z aktualnymi mechanizmami poczty. Poproś hosting o aktualizację środowiska, jeśli działa na niezalecanej wersji.
Konflikt wtyczek lub problem z motywem
Wtyczka formularza może kolidować z innymi (cache, bezpieczeństwo, antyspam) lub z motywem. Aby to potwierdzić, tymczasowo wyłącz pozostałe dodatki i ponów test wysyłki.
Zbyt agresywne zabezpieczenia antyspamowe
reCAPTCHA, honeypot czy filtry mogą blokować wysyłkę z określonych adresów lub dla konkretnych treści. Zweryfikuj ustawienia, jeśli część prób kończy się niepowodzeniem.
Krok 1 – poprawna konfiguracja formularza (To / From / Reply-To)
Najpierw upewnij się, że formularz ma sensownie ustawione pola e-mail. W panelu WordPress wykonaj:
- Wejdź w sekcję Formularze (np. Contact Form 7, WPForms itd.).
- Edytuj formularz kontaktowy.
- Przejdź do ustawień wiadomości e-mail (zakładka „Mail” lub „Powiadomienia”).
Następnie sprawdź kluczowe pola: To (Odbiorca) powinno wskazywać istniejącą, działającą skrzynkę, na którą chcesz otrzymywać wiadomości; From (Nadawca) ustaw na adres z Twojej domeny, np. wordpress@twojadomena.pl lub no-reply@twojadomena.pl.
Wielu dostawców wymaga, aby w polu „From” podać skrzynkę utworzoną na tym samym serwerze, z którego odbywa się wysyłka.
Ustaw nagłówek „Reply-To” na e-mail użytkownika
Chcesz odpowiadać klientowi jednym kliknięciem? Ustaw dodatkowy nagłówek tak, aby Reply-To wskazywał na adres wpisany w formularzu. W polu „Dodatkowe nagłówki” wpisz:
Reply-to: [your-email]
W tym modelu nadawcą jest techniczny adres z Twojej domeny, a odpowiedź trafia bezpośrednio do osoby, która wysłała wiadomość – zwiększa to wiarygodność nadawcy i wygodę korespondencji.
Krok 2 – sprawdź, czy hosting nie blokuje funkcji mail()
Jeśli po poprawnym ustawieniu To/From wysyłka nadal nie działa, możliwe, że Twój hosting blokuje funkcję mail() lub ogranicza jej działanie.
Zweryfikuj w dokumentacji lub u supportu, czy mail() jest dostępna oraz jakie są zalecane metody wysyłki z aplikacji. Wiele firm wprost rekomenduje SMTP zamiast PHP mail(). Gdy potwierdzą blokadę, przejdź od razu do konfiguracji SMTP.
Krok 3 – konfiguracja SMTP w WordPressie (najskuteczniejsze rozwiązanie)
SMTP to uwierzytelniony sposób wysyłki, który działa jak klasyczny program pocztowy. Przełączenie WordPressa na SMTP rozwiązuje większość problemów z formularzami.
Wybór wtyczki SMTP
Najprościej sięgnąć po sprawdzone dodatki: WP Mail SMTP (polecane jako domyślne) lub Easy WP SMTP (lekka ręczna konfiguracja).
Utwórz specjalny adres e-mail do wysyłki
Załóż dedykowaną skrzynkę techniczną, np. no-reply@twojadomena.pl lub wordpress@twojadomena.pl. Będzie to adres nadawcy wszystkich wiadomości z formularzy i skrzynka w pełni zgodna z politykami SPF/DKIM Twojego hostingu.
Skonfiguruj SMTP w wtyczce
Po instalacji i włączeniu wtyczki przejdź do jej ustawień (np. Ustawienia → SMTP Settings), a następnie uzupełnij poniższe pola:
- From Email Address – wpisz adres nadawcy, np.
no-reply@twojadomena.pl; - From Name – nazwa wyświetlana u odbiorcy (np. nazwa firmy);
- SMTP Host – adres serwera SMTP (z dokumentacji hostingu);
- Type of Encryption – wybierz
TLSlubSSLzgodnie z zaleceniami; - SMTP Port – port dla wybranego szyfrowania (wg hostingu);
- SMTP Authentication – ustaw na YES (wymagane);
- SMTP Username – pełny adres e-mail lub login skrzynki (zależnie od serwera);
- SMTP Password – hasło do skrzynki e-mail.
Parametry hosta, portów i szyfrowania znajdziesz w panelu hostingu – w sekcji dotyczącej poczty.
Wyślij testowego maila
Większość wtyczek SMTP posiada zakładkę „Test Email”. Wykonaj trzy kroki:
- Wpisz docelowy adres (najlepiej swój główny e-mail).
- Ustaw przykładowy temat i treść.
- Kliknij „Wyślij” i sprawdź skrzynkę.
Jeśli test się powiedzie, WordPress prawidłowo wysyła maile przez SMTP i ta konfiguracja będzie używana przez formularze oraz inne wtyczki wysyłające powiadomienia.
Krok 4 – ustawienia DNS: SPF, DKIM, DMARC i MX
Jeśli maile nadal trafiają do spamu albo część z nich „ginie”, sprawdź rekordy w panelu DNS swojej domeny.
Wejdź do panelu DNS swojej domeny
SPF, DKIM, DMARC i MX konfigurujesz w panelu DNS domeny – zwykle w panelu hostingu lub operatora.
SPF – które serwery mogą wysyłać maile?
Rekord SPF informuje, które serwery mają prawo wysyłać wiadomości w imieniu Twojej domeny. Dodaj wpis SPF zgodnie z zaleceniami hostingu i uwzględnij serwer WWW (jeśli wysyła maile) oraz serwery pocztowe obsługujące Twoją domenę.
DKIM – podpis kryptograficzny wiadomości
DKIM pozwala zweryfikować, że wiadomość faktycznie pochodzi z Twojej domeny i nie została zmodyfikowana po drodze. U większości hostingów wystarczy włączyć DKIM i opublikować gotowy rekord w DNS.
DMARC – polityka traktowania podejrzanych wiadomości
Rekord DMARC określa, co robić z mailami, które nie przejdą weryfikacji SPF lub DKIM. Najpierw włącz tryb raportowania, a dopiero po stabilizacji ustaw surowszą politykę.
Możesz ustawić politykę:
- none – tylko raportowanie,
- quarantine – podejrzane wiadomości trafiają do spamu,
- reject – są odrzucane.
MX – serwery obsługujące pocztę
Rekord MX kieruje przychodzące maile do właściwego dostawcy. Jeśli używasz zewnętrznej poczty, upewnij się, że wpisy MX są zgodne z wytycznymi tej usługi.
Krok 5 – aktualizacje, konflikty wtyczek i zabezpieczenia
Jeśli wysyłka przez SMTP działa, a formularz nadal nie wysyła wiadomości, problem bywa logiczny (konfiguracja, konflikt), a nie transportowy.
Zaktualizuj wtyczkę formularza i WordPressa
Nieaktualne wersje wtyczek lub brak kompatybilności z bieżącym WordPressem powodują błędy. Zaktualizuj dodatek formularza, sam WordPress oraz kluczowe wtyczki, a następnie wykonaj test.
Sprawdź konflikt wtyczek
Skorzystaj z poniższej procedury diagnozy konfliktu:
- Wyłącz wszystkie wtyczki poza formularzem i wtyczką SMTP.
- Sprawdź, czy formularz wysyła wiadomości.
- Jeśli działa – włączaj pozostałe wtyczki po jednej, po każdym włączeniu testuj formularz.
- Gdy po włączeniu konkretnej wtyczki wysyłka przestaje działać, masz winowajcę (konflikt).
Sprawdź zabezpieczenia (captcha, antyspam, firewall)
Mechanizmy antyspamowe i zabezpieczające mogą:
- blokować wysyłkę z określonych adresów IP,
- oznaczać treść wiadomości jako spam,
- wymagać poprawnego wypełnienia reCAPTCHA.
Jeśli problem pojawia się w określonych sytuacjach (np. z konkretnego kraju, po kilku próbach), sprawdź ustawienia wtyczek bezpieczeństwa i zweryfikuj integrację reCAPTCHA lub innych filtrów.
Krok 6 – logi maili i testy na różnych urządzeniach
Włącz logowanie wysyłanych maili
Wtyczki SMTP często pozwalają włączyć logi wiadomości e-mail, co ułatwia diagnozę – zobaczysz, czy WordPress próbował wysłać mail oraz jakie błędy zwrócił serwer SMTP.
Przetestuj formularz na różnych urządzeniach
Zdarza się, że formularz działa na komputerze, a nie działa na telefonie – lub odwrotnie. Testuj w kilku przeglądarkach oraz w trybie incognito, aby wykluczyć wpływ cache i ciasteczek.
Warto także przetestować formularz w następujących warunkach:
- w różnych przeglądarkach,
- na urządzeniach mobilnych,
- w trybie prywatnym/incognito.
Dobre praktyki na przyszłość
Poniższe zasady znacząco poprawią dostarczalność i stabilność wysyłki z WordPressa:
- zawsze wysyłaj z adresu w swojej domenie – np.
wordpress@twojadomena.pl; - używaj SMTP zamiast PHP mail() – to stabilniejsze i lepiej zgodne z politykami pocztowymi;
- ustaw Reply-To na adres użytkownika – nie używaj go jako technicznego nadawcy;
- dbaj o rekordy SPF, DKIM, DMARC i MX – poprawne wpisy w DNS zwiększają szansę dostarczenia;
- aktualizuj WordPressa, motyw i wtyczki – zmniejszasz ryzyko błędów i konfliktów;
- włącz logi maili – szybciej wykryjesz problemy i nie stracisz ważnych zapytań.