
🔧 Contact Form 7: konfigurujemy wysyłanie listów i naprawiamy błędy dostarczania
Jak Contact Form 7 wysyła wiadomości i dlaczego nie dochodzą
Contact Form 7 jest używany na ponad 5 milionach stron, to najpopularniejsza wtyczka formularzy dla WordPress. Skonfigurowanie formularza z trzema polami zajmuje parę minut, ale kiedy wiadomości przestają przychodzić, zaczyna się ból głowy: właściciel strony traci zapytania, nie rozumie przyczyn i zagłębia się w gąszcz forów.
Problem prawie nigdy nie leży w samej wtyczce. CF7 przekazuje wiadomość do funkcji wp_mail(), a ta, do Pana/Pani serwera. Dalej scenariusz zależy od hostingu, ustawień PHP, aktywnych wtyczek i dziesiątka innych czynników. Jedno wyłączone REST API lub nieprawidłowe pole „Od", i formularz działa, a wiadomości nie ma.
Zebraliśmy konfigurację krok po kroku szablonu pocztowego CF7 i rozłożyliśmy na czynniki pierwsze wszystkie typowe przyczyny awarii, z konkretnymi rozwiązaniami, które są sprawdzone na dziesiątkach stron.
💡 Szybki przegląd:
- Wypełniamy pola Do, Od i Temat w ustawieniach wiadomości
- Kopiujemy gotowy szablon HTML treści wiadomości
- Sprawdzamy główne przyczyny, dlaczego wiadomości nie wychodzą
- Konfigurujemy SMTP dla stabilnej dostawy
Konfiguracja szablonu pocztowego: krok po kroku
Otwieramy formularz w panelu administracyjnym: Formularz kontaktowy → wybrać formularz → zakładka „Wiadomość". Tutaj CF7 składa wiadomość z trzech części: nagłówków, tematu i treści. Błąd w którymkolwiek polu psuje dostawę, przejdźmy przez każde z nich.
Do, Od i Temat
Do, Pana/Pani służbowy adres email, na który przychodzą zapytania. Na przykład, info@ваш-домен.com lub adres Gmail, jeśli używa Pan/Pani wtyczki SMTP.
Od, tutaj główna zasada: domena nadawcy musi być zgodna z domeną strony. Większość hostingodawców odrzuca wiadomości, gdzie w polu „Od" widnieje [email protected], a strona jest na mysite.com. Proszę wpisać site@ваш-домен.com, sama skrzynka może nie istnieć, to normalne. Serwer pocztowy sprawdza właśnie domenę, a nie rzeczywistość adresu.
Temat, proszę używać makr CF7 do podstawiania danych:
1 [_site_title] — Форма «Контактная форма»
[_site_title] automatycznie podstawi nazwę strony z ustawień WordPress. Dzięki temu od razu widać, z którego projektu przyszło zapytanie.
Dodatkowe nagłówki, Reply-to nie ruszamy, CF7 sam ustawi email z pola formularza, które wskaże Pan/Pani w treści wiadomości.
Treść wiadomości: szablon HTML
Standardowa wiadomość CF7 to goły tekst z etykietami pól. Wygląda tanio i jest nieczytelna. Oto szablon, którego używamy we wszystkich projektach, z logo, normalnym układem i linkami do emaila/telefonu klienta:
1 <img src="https://ВАШ_ДОМЕН.COM/wp-content/uploads/2024/logo-150x150.png" 2 style="max-width: 150px !important;"> 3 4 <h3>Пользователь заполнил следующие данные:</h3> 5 6 <p><b>Имя:</b> [text-59]</p> 7 <p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p> 8 <p><b>Телефон:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 9 <p><b>Сообщение:</b> [textarea-102]</p> 10 11 <p>Сообщение отправлено с сайта [_site_title] ([_site_url])</p>
Co tu jest ważne: logo musi być kwadratowe i kompaktowe (około 150 px na każdym boku), w przeciwnym razie w klientach pocztowych się rozjedzie. Makra w nawiasach kwadratowych ([text-59], [Email]) to tagi pól Pana/Pani formularza; proszę podstawić swoje nazwy z zakładki „Formularz". I koniecznie proszę zaznaczyć pole wyboru „Używaj formatu HTML wiadomości" pod edytorem szablonu, bez niego tagi HTML przyjdą jako zwykły tekst.

6 Przyczyn, dlaczego wiadomości nie wychodzą, i co z tym zrobić
1. Nieprawidłowe pole „Od"
Najczęstszy błąd: w „Od" wskazano email klienta z formularza, [Email]. Serwer odbiorcy widzi wiadomość z domeną gmail.com, wysłaną z Pana/Pani hostingu, i blokuje ją jako spoofing. Rozwiązanie: w „Od" zawsze musi być adres w domenie strony. Email klienta proszę umieścić w Reply-to, poprzez dodatkowy nagłówek:
1 Reply-To: [Email]
2. Konflikt wtyczek bezpieczeństwa
Wtyczki takie jak Wordfence, iThemes Security (obecnie Solid Security) oraz All-In-One Security mogą blokować wychodzące żądania HTTP WordPressa, w tym wysyłanie wiadomości e-mail. Diagnostyka jest prosta: proszę wyłączyć wszystkie wtyczki oprócz Contact Form 7 i przetestować formularz. Jeśli zacznie działać, proszę włączać wtyczki pojedynczo i wyłapać winowajcę.
3. Wyłączony REST API
Contact Form 7 używa WordPress REST API do wysyłania formularzy przez AJAX. Wtyczki optymalizacyjne, takie jak Clearfy Cache (uwaga: od października 2025 projekt przeszedł pod skrzydła Super Page Cache i nie jest już rozwijany samodzielnie; obecnym użytkownikom zaleca się migrację na Super Page Cache), mogą wyłączać REST API, aby przyspieszyć działanie strony. Proszę sprawdzić ustawienia swojego optymalizatora: przełącznik REST API powinien być w pozycji „Wył.", co oznacza, że REST API jest włączony i działa.
4. Hosting blokuje funkcję mail()
Na tanich hostingach funkcja PHP mail() jest często wyłączona lub ograniczona. Contact Form 7 domyślnie wysyła wiadomości właśnie za jej pomocą. Proszę napisać do pomocy technicznej hostingu i zapytać, czy mail() jest dozwolona w Pana/Pani taryfie. Jeśli nie, proszę przejść na SMTP (sekcja poniżej), to radykalnie rozwiązuje problem.
5. Wiadomości trafiają do spamu
Nawet jeśli wiadomość została wysłana, Gmail lub poczta hostingowa może umieścić ją w spamie. Przyczyny: brak rekordów SPF/DKIM dla domeny, „podejrzany" nagłówek „Od", HTML bez części tekstowej. Rozwiązanie: wtyczka SMTP z wysyłką przez zewnętrzną usługę (Gmail API, Mailgun, SendGrid). Podpisują one każdą wiadomość podpisem DKIM i korzystają z autorytatywnych serwerów SMTP, przez co dostarczalność staje się praktycznie stuprocentowa.
6. Wrażliwość na wersję PHP i WordPressa
CF7 jest aktywnie aktualizowany (proszę sprawdzić aktualną wersję na wordpress.org, na połowę 2026 roku jest to gałąź 6.x, działa na PHP 7.4 i wyższych). Jeśli Pana/Pani hosting używa przestarzałego PHP 5.6 lub, przeciwnie, włączył(a) Pan/Pani eksperymentalne PHP 8.4 bez sprawdzenia kompatybilności, wiadomości mogą po cichu przestać działać. Proszę trzymać się PHP 8.1-8.2, to złoty środek.
Konfiguracja SMTP: rozwiązujemy problem dostarczalności raz na zawsze
SMTP to protokół, który przesyła wiadomość nie przez funkcję mail() Pana/Pani serwera, ale przez pełnoprawny serwis pocztowy. Dla WordPressa istnieje kilkanaście wtyczek, które przechwytują wp_mail() i kierują wiadomości przez zewnętrzny serwer SMTP.
Co wybrać:
- Gmail API, bezpłatnie do 500 wiadomości na dobę przez Google Workspace lub osobisty Gmail. Plus: doskonała dostarczalność. Minus: trzeba utworzyć projekt w Google Cloud Console i uzyskać klucze OAuth.
- Brevo (dawniej Sendinblue), 300 wiadomości na dobę bezpłatnie, prosty SMTP z loginem i hasłem. Nie wymaga OAuth.
- Mailgun, 100 wiadomości na dobę bezpłatnie, klucz API i gotowe. Dla programistów.
Proszę zainstalować dowolną wtyczkę SMTP (WP Mail SMTP, Post SMTP, FluentSMTP, wszystkie są bezpłatne w repozytorium WordPress), wprowadzić dane od dostawcy, a funkcja mail() nie będzie już Panu/Pani potrzebna. CF7 będzie nadal działać jak zwykle, ale wiadomości będą wysyłane niezawodnym kanałem.
CSS i niestandardowa czcionka w wiadomościach CF7
Jeśli wysyła Pan/Pani nie tylko zgłoszenia, ale na przykład potwierdzenia zamówienia z krótkimi szczegółami produktu, warto ostylować wiadomość. CSS w wiadomości e-mail działa poprzez style inline (style=""), zewnętrzne arkusze stylów są ignorowane przez klienty pocztowe. Oto przykład ostylowanego szablonu:
1 <img src="https://ВАШ_ДОМЕН.COM/logo.png" 2 style="max-width: 150px !important;"> 3 4 <h2 style="font-family: Arial, sans-serif; color: #333;"> 5 Пользователь выбрал товар: 6 </h2> 7 <h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2> 8 9 <hr style="border: 1px solid #eee;"> 10 11 <h3 style="font-family: Arial, sans-serif; color: #555;"> 12 Пользователь заполнил следующие данные: 13 </h3> 14 15 <p style="font-size: 14px;"><b>Имя:</b> [text-59]</p> 16 <p style="font-size: 14px;"><b>Телефон:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 17 <p style="font-size: 14px;"><b>Email:</b> [Email]</p> 18 19 <p style="color: #999; font-size: 12px;"> 20 Сообщение отправлено с сайта <b>[_site_title] ([_site_url])</b> 21 </p>
Zasady są takie same: logo, kwadrat, znacznik wyboru w formacie HTML, włączony, makra, własne. Niestandardowe czcionki z Google Fonts nie działają w poczcie, proszę stosować stosy systemowe (Arial, Helvetica, sans-serif).
⁉️🤔 Często zadawane pytania
Dlaczego CF7 pokazuje „Wiadomość wysłana", a listu nie ma?
CF7 odpowiada za zebranie danych i przekazanie ich do WordPressa, a nie za ostateczną dostawę. Odpowiedź „sukces" oznacza, że żądanie AJAX wykonało się bez błędów. Samo wysłanie listu odbywa się w tle przez
wp_mail()i jeśli na tym etapie coś poszło nie tak, hosting zablokowałmail(), adres „Od" nie przeszedł weryfikacji, list trafił do spamu, CF7 nie pokaże błędu. Dlatego po skonfigurowaniu zawsze testuj formularz na rzeczywistą skrzynkę pocztową.
Czy koniecznie trzeba używać wtyczki SMTP?
Nie jest to obowiązkowe, ale zdecydowanie zalecane. Bez SMTP Pana/Pani listy wysyła funkcja PHP
mail(), która nie uwierzytelnia nadawcy, nie podpisuje DKIM i często jest blokowana przez filtry antyspamowe. Wtyczka SMTP dodaje uwierzytelnienie i radykalnie zwiększa dostarczalność. W praktyce widzieliśmy dziesiątki stron, gdzie formularz „działał", ale listy trafiały do spamu lub w ogóle nie dochodziły. Po włączeniu SMTP przez Post SMTP lub FluentSMTP problem znikał w 5 minut.
Co zrobić, jeśli CF7 przestał działać po aktualizacji WordPressa?
Najpierw proszę sprawdzić wersję PHP, CF7 wymaga PHP 7.4 lub wyższego (proszę sprawdzić w oficjalnej dokumentacji). Następnie proszę wyłączyć wtyczki buforowania i optymalizacji: często psują one REST API podczas aktualizacji rdzenia. Jeśli to nie pomoże, proszę tymczasowo przełączyć się na standardowy motyw WordPress i przetestować formularz. W większości przypadków jest to konflikt z wtyczką buforowania lub bezpieczeństwa, która nie została jeszcze dostosowana do nowej wersji rdzenia.
Jak sprawdzić, czy REST API działa?
Proszę otworzyć w przeglądarce
https://ваш-сайт.com/wp-json/, jeśli zobaczy Pan/Pani JSON z listą dostępnych punktów końcowych, REST API jest aktywne. Jeśli otrzyma Pan/Pani 404 lub biały ekran, REST API jest wyłączone przez wtyczkę optymalizacyjną lub security. To najszybszy sposób diagnostyki: punkt końcowy zwraca JSON, CF7 ma wszystko, co niezbędne do działania. Proszę szukać ustawień REST API we wtyczkach takich jak Clearfy, Perfmatters, WP-Optimize lub w rozwiązaniach bezpieczeństwa takich jak Wordfence.
Czy można wysyłać listy z załącznikami przez CF7?
Tak, CF7 obsługuje przesyłanie plików przez pole
[file]. W ustawieniach listu, w polu „Załączniki", proszę podać makro tego pola, a plik zostanie dołączony do listu. Większość hostingów ogranicza rozmiar załączników przezupload_max_filesizew PHP (zazwyczaj 2-8 MB). Do wielokrotnego przesyłania proszę używać osobnych pól. Jeśli listy z załącznikami nie przychodzą przy działającym formularzu bez załączników, problem leży w limicie rozmiaru, proszę zmniejszyć pliki lub poprosić hosting o zwiększenie limitu.
Co wybrać w 2026 roku: CF7 + SMTP czy alternatywy?
Contact Form 7 nadal jest najlepszą darmową wtyczką formularzy dla WordPressa, jeśli potrzebuje Pan/Pani dostosowania i nie obawia się Pan/Pani zajrzeć do ustawień. Ale problem z wysyłaniem listów jest wbudowany w samą architekturę WordPressa: funkcja mail() jest z definicji zawodna.
Dlatego formuła na rok 2026 jest następująca: Contact Form 7 + wtyczka SMTP. Proszę zainstalować FluentSMTP (darmowy, lekki, bez reklam w panelu administracyjnym) lub Post SMTP i skonfigurować wysyłanie przez Gmail API, Brevo lub Mailgun. Te dwa komponenty razem dają: nieograniczone dostosowanie formularzy + dostarczalność na poziomie usług korporacyjnych. Koszt, 0 $, czas konfiguracji, 10 minut.
Jeśli natomiast chce Pan/Pani formularza „od ręki", gdzie wszystko działa od razu i bez zbędnych ruchów, proszę przyjrzeć się WPForms lub Ninja Forms. Są płatne, ale wysyłanie SMTP mają domyślnie wbudowane przez własne serwery. Wybór należy do Pana/Pani: elastyczność CF7 czy prostota rozwiązań komercyjnych.



