{"id":90051,"date":"2026-10-05T08:20:00","date_gmt":"2026-10-05T06:20:00","guid":{"rendered":"https:\/\/codescriptum.pl\/blog\/wordpress-nie-wysyla-maili\/"},"modified":"2026-10-05T08:20:00","modified_gmt":"2026-10-05T06:20:00","slug":"wordpress-nie-wysyla-maili","status":"publish","type":"post","link":"https:\/\/codescriptum.pl\/blog\/wordpress-nie-wysyla-maili\/","title":{"rendered":"WordPress nie wysy\u0142a maili z formularza - przyczyny i konfiguracja SMTP"},"content":{"rendered":"<h2>Jak to wygl\u0105da<\/h2>\n<p>Klient wysy\u0142a formularz kontaktowy, widzi podzi\u0119kowanie, ale wiadomo\u015b\u0107 nigdy nie dociera do firmowej skrzynki. Nie przychodz\u0105 te\u017c maile z resetem has\u0142a, powiadomienia o nowych komentarzach czy zam\u00f3wieniach. Czasem problem jest wybi\u00f3rczy: maile dochodz\u0105 na skrzynk\u0119 za\u0142o\u017con\u0105 na tym samym hostingu, a do Gmaila lub Outlooka ju\u017c nie, albo trafiaj\u0105 tam do spamu.<\/p>\n<ul>\n<li>formularz potwierdza wysy\u0142k\u0119, a skrzynka jest pusta,<\/li>\n<li>maile przychodz\u0105 z adresu wordpress@twojadomena, kt\u00f3ry nie istnieje,<\/li>\n<li>wiadomo\u015bci l\u0105duj\u0105 w spamie albo s\u0105 odrzucane z informacj\u0105 o braku uwierzytelnienia.<\/li>\n<\/ul>\n<p>Najgorsze w tym problemie jest to, \u017ce cz\u0119sto nikt go nie zauwa\u017ca. Strona dzia\u0142a, formularz wygl\u0105da poprawnie, a firma dowiaduje si\u0119 o utraconych zapytaniach dopiero wtedy, gdy klient zapyta, dlaczego nikt mu nie odpowiedzia\u0142. Dlatego wysy\u0142k\u0119 maili warto sprawdza\u0107 po ka\u017cdej zmianie hostingu, domeny lub wtyczki formularzy.<\/p>\n<h2>Dlaczego tak si\u0119 dzieje<\/h2>\n<p>WordPress wysy\u0142a poczt\u0119 funkcj\u0105 wp_mail(), kt\u00f3ra domy\u015blnie przekazuje wiadomo\u015b\u0107 do serwera hostingu przez PHP mail(). Taka wiadomo\u015b\u0107 nie jest powi\u0105zana z \u017cadn\u0105 skrzynk\u0105 ani uwierzytelniona, wi\u0119c serwery odbiorc\u00f3w nie maj\u0105 podstaw, \u017ceby jej zaufa\u0107.<\/p>\n<h3>Brak uwierzytelnionej wysy\u0142ki (SMTP)<\/h3>\n<p>Przy wysy\u0142ce przez SMTP strona loguje si\u0119 do prawdziwej skrzynki pocztowej lub us\u0142ugi wysy\u0142kowej, tak jak program pocztowy. Wiadomo\u015b\u0107 wychodzi wtedy z serwera, kt\u00f3ry jest uprawniony do wysy\u0142ania poczty z Twojej domeny.<\/p>\n<h3>Brak rekord\u00f3w SPF, DKIM i DMARC<\/h3>\n<p>Gmail, Yahoo i inni dostawcy sprawdzaj\u0105, czy domena nadawcy potwierdza prawo serwera do wysy\u0142ki (SPF), czy wiadomo\u015b\u0107 ma wa\u017cny podpis (DKIM) i jak\u0105 polityk\u0119 ma domena (DMARC). Gmail i Yahoo wymagaj\u0105 uwierzytelnienia poczty od nadawc\u00f3w, a przy jego braku wiadomo\u015bci s\u0105 odrzucane albo trafiaj\u0105 do spamu.<\/p>\n<h3>Z\u0142y adres nadawcy<\/h3>\n<p>Wiele formularzy wpisuje w pole nadawcy adres klienta, np. z Gmaila. Serwer Twojej strony nie ma prawa wysy\u0142a\u0107 poczty w imieniu Gmaila, wi\u0119c taka wiadomo\u015b\u0107 nie przejdzie weryfikacji. Adres klienta powinien trafi\u0107 do pola Reply-To.<\/p>\n<h3>Limity i blokady hostingu<\/h3>\n<p>Hostingi ograniczaj\u0105 liczb\u0119 maili na godzin\u0119 i blokuj\u0105 wysy\u0142k\u0119 z kont, z kt\u00f3rych poszed\u0142 spam, np. z zainfekowanej strony. Informacj\u0119 o blokadzie znajdziesz zwykle w panelu hostingu.<\/p>\n<table>\n<thead>\n<tr>\n<th>Objaw<\/th>\n<th>Najcz\u0119stsza przyczyna<\/th>\n<th>Rozwi\u0105zanie<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u017baden mail nie wychodzi<\/td>\n<td>Blokada lub limit hostingu<\/td>\n<td>SMTP lub us\u0142uga transakcyjna<\/td>\n<\/tr>\n<tr>\n<td>Maile tylko w spamie<\/td>\n<td>Brak SPF, DKIM, DMARC<\/td>\n<td>Rekordy DNS domeny<\/td>\n<\/tr>\n<tr>\n<td>Maile z formularza gin\u0105, reset has\u0142a dzia\u0142a<\/td>\n<td>Adres klienta w polu nadawcy<\/td>\n<td>Nadawca w Twojej domenie, klient w Reply-To<\/td>\n<\/tr>\n<tr>\n<td>Dochodz\u0105 tylko na skrzynk\u0119 na tym samym serwerze<\/td>\n<td>Brak uwierzytelnienia<\/td>\n<td>SMTP i rekordy DNS<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"csb-note csb-note--tip\">\n<p>Niezale\u017cnie od poczty w\u0142\u0105cz zapisywanie zg\u0142osze\u0144 formularza w bazie WordPressa. Nawet gdy wysy\u0142ka zn\u00f3w zawiedzie, \u017cadne zapytanie od klienta nie przepadnie.<\/p>\n<\/div>\n<p>Ten problem jest jednym z naszej listy <a href=\"\/blog\/100-problemow-z-wordpressem\/\">100 problem\u00f3w z WordPressem<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak to wygl\u0105da Klient wysy\u0142a formularz kontaktowy, widzi podzi\u0119kowanie, ale wiadomo\u015b\u0107 nigdy nie dociera do firmowej skrzynki. Nie przychodz\u0105 te\u017c maile z resetem has\u0142a, powiadomienia o nowych komentarzach czy zam\u00f3wieniach.\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[],"class_list":["post-90051","post","type-post","status-publish","format-standard","hentry","category-administracja-www"],"_links":{"self":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts\/90051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/comments?post=90051"}],"version-history":[{"count":0,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/posts\/90051\/revisions"}],"wp:attachment":[{"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/media?parent=90051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/categories?post=90051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codescriptum.pl\/blog\/wp-json\/wp\/v2\/tags?post=90051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}