Hosting i domeny

Formularz kontaktowy nie wysyła maili? SMTP, DNS i testy doręczenia

Jak diagnozować brak wiadomości z formularza: SMTP, From, Reply-To, logi, limity wysyłki i SPF. Poradnik dla stron PHP i WordPress.

KRÓTKA ODPOWIEDŹ

Komunikat „wysłano” może oznaczać tylko przyjęcie wiadomości przez aplikację. Sprawdź log SMTP, używaj domenowego adresu From i umieszczaj e-mail klienta w Reply-To.

Zacznij od kontrolowanego testu

Wyślij wiadomość z unikalnym tematem i zanotuj godzinę, adres odbiorcy oraz wynik formularza. Sprawdź spam i kwarantannę. Wykonaj test na dwóch niezależnych skrzynkach. Jeżeli problem występuje tylko u jednego operatora, istotne będą wyniki uwierzytelniania i odpowiedź jego serwera.

Nie testuj dziesiątkami identycznych wiadomości. Możesz uruchomić ograniczenia antyspamowe i utrudnić diagnozę. Nie podawaj w testowym formularzu prawdziwych danych klientów, jeżeli logowanie diagnostyczne zapisuje całą treść.

Uporządkuj dane nadawcy

Pole From powinno używać kontrolowanego adresu Twojej domeny, zgodnego z konfiguracją wysyłki. Adres wpisany przez klienta umieść w Reply-To. Podszywanie się przez From pod gmail.com lub inną cudzą domenę może powodować problemy z polityką uwierzytelniania.

Skonfiguruj SPF, DKIM i DMARC dla rzeczywistej usługi wysyłającej. Nie dodawaj rekordów na podstawie przykładu z przypadkowego bloga. Jeżeli WordPress korzysta z zewnętrznego SMTP, konfiguracja DNS musi uwzględniać ten system, nie tylko lokalny serwer hostingu.

SMTP: host, port i szyfrowanie muszą do siebie pasować

Użyj danych operatora poczty. Typowe porty to 587 dla połączenia z STARTTLS albo 465 dla TLS od początku, ale decyduje instrukcja konkretnej usługi. Nie wyłączaj weryfikacji certyfikatu, aby ukryć problem nazwy hosta. Sprawdź nazwę użytkownika, metodę uwierzytelniania i możliwość wysyłki z wybranego From.

Hasło lub token przechowuj w mechanizmie konfiguracji aplikacji. Nie wklejaj go do publicznego repozytorium ani zgłoszenia pomocy. Jeśli token wyciekł, unieważnij go i wygeneruj nowy. Błąd połączenia może też wynikać z blokady portów wychodzących na hostingu.

Jak czytać wynik?

ObjawNajbliższy krok
Connection refused lub timeoutHost, port, firewall i łączność wychodząca.
Authentication failedDane konta i dopuszczona metoda logowania.
Odrzucony nadawcaZgodność From z kontem i polityką operatora.
SMTP przyjął, odbiorca nie widziLog dostarczenia, spam, reputacja i uwierzytelnienie.
Formularz milczy przed wysyłkąWalidacja, JavaScript, endpoint i log PHP.

Kod przyjęcia przez pierwszy serwer nie dowodzi dostarczenia do skrzynki docelowej. Szukaj dalszego wyniku lub wiadomości zwrotnej. Jeśli usługa daje identyfikator maila, zachowaj go do zgłoszenia.

Nie zapomnij o nadużyciach

Publiczny formularz powinien mieć walidację, ograniczenie częstotliwości i ochronę przed automatyzacją dostosowaną do strony. CAPTCHA sama nie rozwiązuje każdej drogi wysyłki. Nie pozwalaj użytkownikowi dowolnie zmieniać odbiorcy ani nagłówków. To formularz kontaktowy, nie otwarty przekaźnik poczty.

Jeżeli strona działa na hostingu Castpol, przekaż obsłudze godzinę próby i zanonimizowany komunikat SMTP. Po naprawie sprawdź także realne działanie Reply-To — otrzymanie maila nie wystarczy, jeśli odpowiedź wraca na niewłaściwy adres.

Źródła i dokumentacja

Dokumentacja do dalszej weryfikacji ustawień i wymagań swojej wersji.

c.
Castpol Blog

Poradnik wydawany przez Castpol. O blogu · Zgłoś poprawkę

KOLEJNY KROK

Te poradniki uzupełniają temat