Bahnhofstraße 22, 52134 Herzogenrath Poniedziałek - piątek: 8:00 - 16:30 kontakt@milnersoftware.de 0176 66798849

Aktualności · WordPress · · 5 min czytania

Formularz kontaktowy WordPress nie wysyła maili – przyczyny i rozwiązanie

Formularz pokazuje „wysłano”, ale nic do Państwa nie dociera? Dlaczego maile z WordPressa trafiają do spamu albo są odrzucane i jak SMTP, SPF, DKIM i DMARC to rozwiązują.

Kleines Team arbeitet gemeinsam an Laptops an einem Holztisch

W skrócie: jeśli formularz kontaktowy na Państwa stronie WordPress przestał wysyłać maile, prawie nigdy nie jest to wina samego formularza. WordPress domyślnie wysyła wiadomości przez funkcję PHP mail() serwera. Takie maile nie mają porządnego potwierdzenia nadawcy, więc trafiają do spamu albo są odrzucane. Niezawodne rozwiązanie: wysyłka przez SMTP z prawdziwej skrzynki w Państwa domenie, nadawca w Państwa domenie, a w DNS wpisy SPF, DKIM i DMARC. Do tego zapisywanie zapytań w WordPressie, żeby żadne nie przepadło.

Ten błąd jest podstępny, bo nikt go nie zauważa. Klientka wypełnia formularz, widzi „Dziękujemy za wiadomość” i czeka na odpowiedź. Do Państwa nic nie dociera. Często wychodzi to na jaw dopiero, gdy ktoś zadzwoni i zapyta, dlaczego nikt się nie odzywa. Do tego czasu mogły przepaść zapytania z kilku tygodni.

Jak WordPress wysyła maile

Contact Form 7, WPForms, formularz Elementora czy Gravity Forms: prawie wszystkie wtyczki formularzy przekazują wiadomość do funkcji WordPressa wp_mail(). Bez dodatkowych ustawień korzysta ona z funkcji PHP mail() serwera. Serwer jakoś wysyła wiadomość, ale nie przez Państwa prawdziwą skrzynkę i często bez podpisów, po których Gmail, Outlook czy GMX rozpoznają prawdziwego nadawcę.

Kiedyś to zwykle działało. Dziś duzi dostawcy poczty sprawdzają nadawców znacznie dokładniej. Google i Yahoo od lutego 2024 wymagają, aby nadawca potwierdzał się co najmniej przez SPF albo DKIM. Kto wysyła dużo (ponad 5000 maili dziennie do Gmaila), potrzebuje SPF i DKIM razem oraz DMARC. Mail z formularza bez tych danych zostaje odrzucony albo ląduje w spamie.

Najczęstsze przyczyny

1. Nadawcą jest adres odwiedzającego

Klasyczny błąd w ustawieniach formularza: jako nadawca („From”) wpisany jest adres, który odwiedzający podał w formularzu, np. [your-email] w Contact Form 7. Wtedy Państwa serwer wysyła maila w imieniu jan@gmail.com. Odbiorca widzi, że ten serwer nie ma prawa wysyłać w imieniu gmail.com. Taki mail w najlepszym razie trafia do spamu, a przy adresach nadawcy z Yahoo, GMX czy web.de zwykle jest całkiem odrzucany.

2. Brak wpisów SPF, DKIM lub DMARC

SPF określa w DNS, które serwery mogą wysyłać maile z Państwa domeny. DKIM cyfrowo podpisuje każdą wiadomość. DMARC mówi odbiorcy, co zrobić z mailami, które nie przejdą obu kontroli. Jeśli tych wpisów brakuje albo nie pasują do faktycznej drogi wysyłki, dostarczalność wyraźnie spada.

3. Hostingodawca ograniczył wysyłkę

Niektórzy hostingodawcy ograniczają funkcję mail() albo całkiem ją wyłączają, np. po nadużyciach spamowych na tym samym serwerze. Czasem adres IP serwera trafia też na czarną listę.

4. Zewnętrzny serwis pocztowy blokuje wysyłkę

Kto wysyła już przez serwis typu Brevo, Mailgun czy SendGrid, nie jest automatycznie bezpieczny. Gdy skończy się limit, klucz API straci ważność albo serwis zablokuje dostęp, maile przestają dochodzić. Formularz mimo to często pokazuje „wysłano”. Dokładnie taki przypadek miałem u klientki: serwis pocztowy zablokował IP serwera, a strona pozornie działała normalnie.

5. Mail dochodzi, ale do spamu

Zanim zaczną Państwo długo szukać: proszę zajrzeć do folderu spam na adresie odbiorcy i, jeśli jest, do kwarantanny serwera pocztowego. Warto też sprawdzić, czy w ustawieniach formularza wpisany jest właściwy adres odbiorcy. Po zmianie agencji zaskakująco często jest to jeszcze stary adres.

Krok 1: ustalić, gdzie mail utyka

  1. Proszę wysłać przez formularz wiadomość testową na adres Gmail i na adres w Państwa domenie.
  2. Proszę tymczasowo zainstalować wtyczkę zapisującą wychodzące maile, np. „WP Mail Logging”. Jeśli mail jest tam zapisany, WordPress przynajmniej go wysłał.
  3. Jeśli nie dochodzi tylko na Gmail, prawie na pewno jest to problem z nadawcą albo SPF/DKIM. Jeśli nie dochodzi nigdzie, problem leży w wysyłce serwera albo w serwisie pocztowym.
  4. Dokładną diagnozę daje wysłanie maila testowego na adres, który pokaże mail-tester.com. Zobaczą Państwo, które kontrole nie przechodzą.

Krok 2: ustawić wysyłkę przez SMTP

Najpewniejsze rozwiązanie to wysyłanie maili z WordPressa przez prawdziwą skrzynkę w Państwa domenie, tak jak robi to program pocztowy. Służą do tego wtyczki „WP Mail SMTP”, „FluentSMTP” albo „Post SMTP”. Potrzebne są:

  • skrzynka w Państwa domenie, np. strona@twoja-domena.de,
  • serwer SMTP dostawcy poczty z jego stron pomocy,
  • port 587 ze STARTTLS albo port 465 z SSL/TLS,
  • login i hasło do skrzynki.

Po konfiguracji proszę wysłać mail testowy z wtyczki, a potem jeszcze jedną wiadomość przez prawdziwy formularz.

Krok 3: poprawnie ustawić nadawcę i adres odpowiedzi

W formularzu jako nadawca zawsze powinien być wpisany adres w Państwa domenie, najlepiej ten sam co we wtyczce SMTP. Adres odwiedzającego trafia do pola „Odpowiedz do” (Reply-To). Dzięki temu w programie pocztowym wystarczy kliknąć „Odpowiedz”, a wiadomość i tak trafi do odwiedzającego. W Contact Form 7 wygląda to tak:

Od:                 Strona <strona@twoja-domena.de>
Dodatkowe nagłówki: Reply-To: [your-email]

Krok 4: sprawdzić SPF, DKIM i DMARC

Te wpisy ustawia się w zarządzaniu DNS domeny, zwykle w panelu hostingu albo rejestratora domeny.

  • SPF: wpis TXT na domenie, zaczynający się od v=spf1, który zezwala na serwer pocztowy Państwa dostawcy. Na jedną domenę może przypadać tylko jeden wpis SPF. Dwa wpisy unieważniają oba.
  • DKIM: włącza się u dostawcy poczty. Pokaże on wpis, który trzeba dodać w DNS.
  • DMARC: wpis TXT na _dmarc.twoja-domena.de. Na początek wystarczy v=DMARC1; p=none; rua=mailto:dmarc@twoja-domena.de. Dzięki temu zbierają Państwo raporty, a maile nie są odrzucane.

Te wpisy trzeba zmieniać ostrożnie. Błędny SPF może sprawić, że także zwykłe maile z programu pocztowego przestaną dochodzić.

Krok 5: dodatkowo zapisywać zapytania

Nawet najlepsza wysyłka kiedyś zawiedzie. Dlatego warto, żeby zapytania były dodatkowo zapisywane w WordPressie. W Contact Form 7 robi to dodatek „Flamingo”, wiele innych wtyczek formularzy ma tę funkcję wbudowaną. Proszę przy tym pamiętać o RODO: zapisywanie trzeba opisać w polityce prywatności, a stare wpisy regularnie usuwać.

Kiedy warto poprosić o pomoc

Gdy nie mają Państwo dostępu do ustawień DNS, gdy po zmianie problemy mają też zwykłe maile albo gdy nie wiadomo, ile zapytań już przepadło. Szczególnie w firmach, które dostają zlecenia przez formularz, każdy dzień bez działającej wysyłki kosztuje realne pieniądze.

Profesjonalna pomoc

Ustawiam wysyłkę tak, żeby zapytania niezawodnie docierały: SMTP z Państwa skrzynką, poprawny nadawca, SPF, DKIM i DMARC, a do tego kopia każdego zapytania w WordPressie. Potem testuję u kilku dostawców poczty. To część usługi naprawa WordPress od 290 € netto. Jeśli ktoś ma stale opiekować się Państwa stroną, jest opieka WordPress.

Autor: Przemysław Milner

Pozostałe wpisy