Loading

Jedna z najczęstszych sytuacji w świecie stron internetowych wygląda tak: ktoś wypełnia formularz kontaktowy, klika „Wyślij”, a potem… cisza. Żadnej wiadomości. Klient twierdzi, że formularz nie działa. Problem najczęściej nie leży w samym formularzu. W rzeczywistości winowajcą bywa sposób, w jaki serwer wysyła pocztę.

Co naprawdę się dzieje

Wiele stron korzysta z funkcji PHP mail(). Historycznie to było wygodne rozwiązanie – serwer po prostu wysyła wiadomość dalej. Tyle że dzisiejsza poczta elektroniczna jest znacznie bardziej paranoiczna niż 15 lat temu. Serwery pocztowe sprawdzają między innymi:

  • rekordy SPF
  • podpis DKIM
  • politykę DMARC

To elementy mechanizmu uwierzytelniania poczty. W skrócie: serwer odbiorcy próbuje ustalić, czy wiadomość naprawdę pochodzi z domeny, która widnieje w nadawcy. Jeżeli formularz wysyła maila z adresu typu: kontakt@twojadomena.pl ale serwer, który go wysyła, nie jest autoryzowany w DNS tej domeny, wiadomość często trafia prosto do spamu albo jest odrzucana. Formularz działa. Poczta nie ufa nadawcy.

Typowe objawy

  • formularz pokazuje komunikat „wysłano wiadomość”
  • mail nie dociera
  • czasem trafia do spamu
  • problem pojawia się tylko przy niektórych adresach (np. Gmail, Outlook)

Skuteczne rozwiązanie

Najprostsza metoda to wysyłanie wiadomości przez SMTP, czyli prawdziwy serwer pocztowy z autoryzacją. W praktyce oznacza to użycie wtyczki, która prześle wiadomość przez usługę pocztową, np.: WP Mail SMTP.

Po konfiguracji formularz nie wysyła już maila „znikąd”. Wiadomość przechodzi przez serwer pocztowy, który potrafi się podpisać odpowiednimi rekordami DNS. Serwery pocztowe są wtedy znacznie bardziej skłonne uwierzyć, że wiadomość nie jest próbą sprzedaży kryptowalut ani cudownego leku na wszystko.

Dodatkowa rzecz, którą warto sprawdzić

Czasami problem pogłębia jeszcze jeden drobiazg: adres nadawcy w formularzu. Bardzo częsty błąd to ustawienie nadawcy jako adresu wpisanego przez użytkownika w formularzu. To oznacza, że mail jest wysyłany np. „od”: jan.kowalski@gmail.com ale z serwera twojej domeny. Dla systemów antyspamowych to wygląda dokładnie jak próba podszywania się pod cudzy adres. Efekt jest łatwy do przewidzenia. Bezpieczna praktyka:

  • nadawca: adres z twojej domeny
  • odpowiedź (reply-to): adres wpisany przez użytkownika