Čo robiť, keď WordPress neodosiela e-maily?

Obrázok tohto článku

Kontaktný formulár hlási "Správa bola odoslaná", ale do schránky nič nepríde. Zákazník nedostane potvrdenie objednávky ani odkaz na obnovenie hesla. Takmer vždy za tým stojí to isté: WordPress posiela poštu spôsobom, ktorému poštové servery neveria. V článku nájdete, ako zistiť, kde sa pošta stráca, ako to vyriešiť cez SMTP a čo musí byť nastavené v DNS domény.

Prečo e-maily z WordPressu nechodia?

WordPress odosiela poštu funkciou wp_mail(). Tá cez knižnicu PHPMailer predvolene volá PHP funkciu mail(), ktorá správu odovzdá poštovému programu priamo na webovom serveri. Hostingy však bežnú poštu posielajú z iných serverov, ktoré sú na to určené, a až tam ju aj digitálne podpisujú. Správa z webu teda odchádza bez podpisu a zo stroja, ktorý na poštu určený nie je.

Je to podobné ako rozdiel medzi listom podaným na pošte a obálkou bez pečiatky, ktorú niekto vhodí priamo do schránky. Môže dôjsť, ale príjemca jej neverí. Gmail, Outlook a ďalšie poštové služby takú správu presunú do spamu alebo ju rovno odmietnu. Niektoré hostingy funkciu mail() z bezpečnostných dôvodov úplne vypínajú a vtedy z webu neodíde nič.

Ak adresu odosielateľa nič nezmení, WordPress posiela z adresy wordpress@vasadomena.sk, ktorá väčšinou vôbec neexistuje. Často sa radí zmeniť e-mailovú adresu administrácie v Nastavenia > Všeobecné, tá však odosielateľa neurčuje. WordPress na ňu len posiela upozornenia, napríklad o aktualizáciách alebo nových používateľoch.

Ďalšie časté príčiny:

  • chýbajúce alebo zle nastavené záznamy SPF, DKIM a DMARC v DNS domény (vysvetlené nižšie),
  • kontaktný formulár, ktorý ako odosielateľa uvádza adresu návštevníka, napríklad jan@gmail.com; server vašej domény nesmie posielať poštu v mene Gmailu, preto takú správu príjemca odmietne alebo označí ako spam,
  • dva doplnky, ktoré naraz menia odosielanie pošty, napríklad dva rôzne doplnky na SMTP,
  • limit hostingu na počet odoslaných e-mailov za hodinu, ktorý sa prejaví najmä pri e-shopoch a newsletteroch.

Ako zistiť, či WordPress e-maily vôbec odosiela?

Skôr než začnete niečo meniť, zistite, kde sa pošta stráca. Poslúži bezplatný doplnok Check & Log Email, ktorý pošle testovací e-mail a ukladá záznam o všetkej pošte odoslanej z webu.

  1. Pošlite testovací e-mail. Po aktivácii doplnku otvorte v menu položku Check & Log Email a pošlite test na adresu v Gmaile alebo inej schránke, do ktorej sa naozaj pozriete. Schránku na vlastnej doméne na prvý test nepoužívajte, pošta do nej môže prísť s oneskorením niekoľkých minút a ľahko sa zmýlite.
  2. Pozrite sa do záznamu. Ak sa test v zázname neobjaví alebo WordPress pri odoslaní hlási chybu, pošta z webu vôbec neodišla. Problém je v nastavení webu alebo hostingu.
  3. Skontrolujte priečinok so spamom. Ak e-mail skončil v spame, WordPress poštu odosiela, ale príjemca jej neverí. Riešením je SMTP a záznamy v DNS.
  4. Prečítajte si hlavičky. V Gmaile otvorte správu, v ponuke pod tromi bodkami zvoľte Zobraziť originál a pozrite sa na riadky SPF, DKIM a DMARC. Pri dobre nastavenom webe majú všetky tri hodnotu PASS. Ak riadok DKIM úplne chýba, správa nebola podpísaná.

Rýchle hodnotenie dá aj služba mail-tester.com. Zobrazí dočasnú adresu, na ktorú pošlete testovací e-mail z webu, a ukáže skóre z 10 bodov aj s rozpisom, čo správe chýba.

Riešenie: odosielanie cez SMTP

SMTP je protokol, ktorým si poštové servery odovzdávajú správy. Keď WordPress odosiela cez SMTP, prihlási sa do skutočnej e-mailovej schránky, rovnako ako Outlook alebo poštová aplikácia v mobile. Pošta z webu tak ide tou istou cestou ako e-maily, ktoré píšete ručne, a hosting ju aj podpíše. Vo väčšine prípadov to problém vyrieši.

  1. Vytvorte schránku na svojej doméne. Napríklad web@vasadomena.sk alebo objednavky@vasadomena.sk. Schránka musí reálne existovať. Adresa na Gmaile alebo inej bezplatnej službe sa ako odosielateľ z webu nehodí, z rovnakého dôvodu ako adresa návštevníka vo formulári.
  2. Zistite prístupové údaje SMTP. Nájdete ich v administrácii hostingu pri e-mailovej schránke alebo v návode hostingu: adresa SMTP servera, port (zvyčajne 465 so šifrovaním SSL alebo 587 s TLS), prihlasovacie meno a heslo. Prihlasovacie meno je celá e-mailová adresa, nie len časť pred zavináčom.
  3. Nainštalujte doplnok na SMTP. Stačí jednoduchý SMTP Mailer, ktorý robí len to, čo má: poštu z WordPressu pošle cez zadaný SMTP server. Po aktivácii pribudne v menu položka SMTP Mailer. V jej časti Settings vyplníte údaje z hostingu: SMTP Host (server), SMTP Authentication (prihlásenie, nastavte na True), SMTP Username a SMTP Password, Type of Encryption (šifrovanie) a SMTP Port. Doplnok je len v angličtine a záznam odoslanej pošty ponúka iba ako platený doplnok.
  4. Nastavte odosielateľa. Adresa odosielateľa musí byť tá istá schránka, do ktorej sa doplnok prihlasuje, za inú adresu poštové servery väčšinou odmietnu poslať. V SMTP Maileri ju zadáte do poľa From Email Address a zapnite aj voľbu Force From Email, aby adresu nemohli prepísať iné doplnky, napríklad formuláre. Do poľa From Name uveďte názov webu alebo firmy, nie "WordPress". Ak máte WooCommerce, rovnakú adresu nastavte aj vo WooCommerce > Nastavenia > E-maily.
  5. Pošlite testovací e-mail. SMTP Mailer ho pošle na karte Test Email. Potom znova skontrolujte hlavičky v Gmaile alebo skóre na mail-tester.com.

Ak web posiela stovky e-mailov denne, napríklad e-shop s množstvom objednávok, oplatí sa namiesto schránky na hostingu použiť službu na hromadné odosielanie, ako je Brevo alebo Mailgun. Aj tieto služby poskytujú prístupové údaje SMTP, takže ich nastavíte v tom istom doplnku.

SPF, DKIM a DMARC: čo musí byť v DNS domény

DNS je verejný zoznam nastavení domény. Servery príjemcov si v ňom okrem iného overujú, či správa naozaj pochádza od vás. Pre poštu sú dôležité tri záznamy:

  • SPF (Sender Policy Framework) určuje, ktoré servery smú posielať poštu za vašu doménu. Musí obsahovať servery hostingu a každú ďalšiu službu, cez ktorú posielate, napríklad službu na newslettre.
  • DKIM (DomainKeys Identified Mail) je digitálny podpis správy. Server odosielateľa správu podpíše a v DNS je verejný kľúč, ktorým príjemca podpis overí.
  • DMARC hovorí serveru príjemcu, čo urobiť so správou, ktorá neprejde kontrolou SPF ani DKIM: prijať ju, presunúť do spamu alebo odmietnuť. Určuje aj to, kam posielať hlásenia o takých správach. Pri prísnom nastavení (p=reject) sa nepodpísaná správa nedostane ani do spamu.

Keby bola doména firma, SPF je zoznam ľudí, ktorí smú podávať poštu v jej mene, DKIM je firemná pečiatka na obálke a DMARC je pokyn pre podateľňu príjemcu, čo má urobiť s listom, ktorý tieto podmienky nesplní.

Záznamy skontrolujete v nástroji MXToolbox, kde zadáte doménu a zvolíte kontrolu SPF alebo DMARC. Nastavujú sa tam, kde spravujete DNS domény, zvyčajne u registrátora alebo hostingu. DKIM sa väčšinou zapína v administrácii hostingu, a ak u neho máte aj DNS, záznam pridá sám.

Z praxe: DKIM v DNS ešte nestačí

Pri jednom projekte padali e-maily z webu do spamu, hoci doména mala SPF, DKIM aj DMARC nastavené správne. Podpora hostingu odpovedala, že DKIM je v DNS, takže je všetko v poriadku. V hlavičkách však riadok DKIM úplne chýbal.

Záznam v DNS je len verejný kľúč. Podpisuje poštový server hostingu, a to iba poštu, ktorá ním prejde. Pošta z webu ním neprechádzala, pretože ju WordPress odovzdával priamo na webovom serveri. Po prepnutí na SMTP ukázali hlavičky hneď platný podpis DKIM.

Ak budete podobný problém riešiť s podporou hostingu, pošlite im dve vzorky: jednu z webmailu a jednu z webu. Podpisovanie býva zapnuté len na jednej z týchto ciest a porovnanie to ukáže okamžite.

Keď nepomôže ani SMTP

  1. Skontrolujte kontaktné formuláre. Ako odosielateľ má byť uvedená adresa webu a adresa návštevníka patrí do poľa Odpovedať na (Reply-To). Keď potom v schránke kliknete na Odpovedať, odpoveď aj tak pôjde návštevníkovi. Contact Form 7 na nesprávneho odosielateľa upozorní priamo pri úprave formulára.
  2. Vylúčte konflikt doplnkov. Ak ste nedávno pridali doplnok alebo zmenili tému, vypínajte doplnky postupne a po každom pošlite testovací e-mail. Nakoniec skúste aj predvolenú tému, napríklad Twenty Twenty-Five. Na e-shope to nerobte na ostrom webe, ale na jeho kópii, inak zákazníkom počas testu nebude fungovať košík ani platby.
  3. Opýtajte sa hostingu. Zistite, či neblokuje funkciu mail() alebo odchádzajúce spojenie na porty SMTP a aký má limit na počet odoslaných e-mailov.

Zhrnutie

E-maily z WordPressu väčšinou nechodia preto, že ich web odosiela bez podpisu a z adresy, ktorá neexistuje. Riešením je odosielanie cez SMTP zo skutočnej schránky na vašej doméne a správne záznamy SPF, DKIM a DMARC. Či všetko funguje, overíte za pár minút testovacím e-mailom a hlavičkami v Gmaile.

Ak sa vám to nepodarí rozbehať alebo nechcete riešiť DNS a hosting sami, odosielanie pošty vám nastavím a overím. Ak chcete, aby sa o web aj takéto veci niekto staral pravidelne, pozrite si správu web stránok, alebo mi rovno napíšte.


Páčil sa vám tento článok? Zdieľajte ho na sociálnych sieťach alebo ho pošlite niekomu, komu by mohol pomôcť.

Zdieľať článok:
Ak chcete podporiť ďalšie články, kúpte mi kávičku.
Profilový obrázok autora článku
O autorovi článku

Juraj

Nezávislý profesionál s viac ako 10 rokmi skúseností v tvorbe webových stránok & eshopov a špecialista na WordPress. Pomáham klientom vytvárať funkčné, moderné a efektívne webové riešenia. Vo voľnom čase cestujem a oddychujem vo wellnesse. Rád varím a ešte radšej jem!

Pridať komentár