Späť na blog
Technika Publikované 16.09.2026 Čítanie na 7 min

Keď kontaktný formulár povie „Ďakujeme“, ale nepríde žiadny e-mail

Kontaktný formulár sa môže pokaziť bez toho, aby niekto videl chybu: návštevník dostane milé potvrdenie, Vy nedostanete nič. Prečo sa to deje a ako si to včas všimnúť.

Predstavte si malú fyzioterapeutickú ambulanciu. Jej webová stránka má kontaktný formulár a formulár funguje – alebo to tak aspoň vyzerá. Návštevníci ho vyplnia, kliknú na „Odoslať“ a uvidia milé „Ďakujeme, čoskoro sa Vám ozveme“. Čo nikto nevidí: správy už pred nejakým časom prestali chodiť do schránky ambulancie. Žiadna chyba, žiadna vrátená správa v nikoho schránke, nikde žiadne červené svetlo. Formulár zlyháva potichu.

Prečo si to nikto nevšimne

Stránka „Ďakujeme“ vo formulári zvyčajne znamená len jedno: webová stránka správu odovzdala ďalej. Či ju poštový server prijme, zaradí do spamu alebo ju cestou odmietne, sa deje neskôr, mimo dohľadu formulára. Napríklad funkcia mail() v PHP hlási úspech hneď, ako lokálny systém prijme správu na doručenie – nie keď sa k niekomu dostane. Návštevník teda dostane potvrdenie a ide ďalej. Majiteľ medzitým vidí prázdnu schránku a predpokladá, že je to jednoducho pokojný mesiac. Menej dopytov samo osebe zriedka vyvoláva poplach: sviatky, počasie, ekonomika – vždy sa nájde vysvetlenie, ktoré znie vierohodnejšie ako „formulár je pokazený“.

Hypotetická časová os
  1. Deň 0
    Cez noc prebehne bežná aktualizácia pluginu. Stránka vyzerá presne ako predtým.
  2. Deň 1
    Príde posledná správa. Nikto nevie, že je posledná.
  3. Dni 2–13
    Návštevníci ďalej odosielajú formulár a ďalej vidia „Ďakujeme“. Do schránky nič neprichádza.
  4. Deň 14
    Niekto zavolá a mierne podráždene sa pýta, prečo mu nikto neodpovedal na dopyt.
  5. Deň 15
    Príčina sa nájde do hodiny. Správy z tých dvoch týždňov sú preč – pokiaľ si formulár neuchovával aj kópiu.
Nie skutočný prípad – ale veľmi typický vzorec.

Bežné príčiny

  • Zmenilo sa heslo SMTP alebo poskytovateľ e-mailu. Formulár sa ďalej prihlasuje starými prihlasovacími údajmi a poštový server odmieta – z pohľadu návštevníka potichu.
  • PHP mail() bez autentifikácie. Webový server posiela poštu priamo, bez prihlásenia na riadny poštový server. Mnohé prijímajúce servery považujú takúto poštu za podozrivú: skončí v spame alebo je rovno odmietnutá.
  • SPF, DKIM a DMARC si nezodpovedajú. Mnohé formuláre vkladajú adresu návštevníka do poľa From. Správa potom tvrdí, že pochádza napríklad z adresy gmail.com, ale posiela ju Váš webový server – presne tomu má DMARC zabrániť.
  • Aktualizácia pluginu alebo zmena témy pokazí formulár alebo jeho CAPTCHA. Zmenená šablóna vynechá pole, niektorý skript sa už nenačíta alebo sa widget CAPTCHA zobrazí bez svojho skriptu – a každé odoslanie neprejde validáciou.
  • Prijímajúca schránka je plná. Poštový server odmieta nové správy a oznámenie o nedoručení ide na adresu, ktorú nikto nečíta.
  • Cookie lišta blokuje skript formulára. Ak nástroj na súhlas zaradí CAPTCHA alebo skript formulára medzi „marketingové“, návštevníci, ktorí cookies odmietnu, môžu dostať formulár, ktorý sa nedá odoslať, alebo ktorého odoslania sú odmietnuté pre chýbajúci token.
  • Platnosť certifikátu TLS alebo domény vypršala. Návštevníci uvidia varovanie prehliadača a odídu, alebo poštový server už nie je bezpečne dostupný. Ak vyprší doména prijímajúcej schránky, pošta na ňu jednoducho prestane chodiť.
  • Vrstva vyrovnávacej pamäte poskytuje zastarané stránky. Vyrovnávacia pamäť celých stránok môže doručiť formulár s neplatným bezpečnostným tokenom (nonce alebo CSRF token). Server odoslanie odmietne a v závislosti od nastavenia návštevník neuvidí žiadnu zrozumiteľnú chybu.

Pasca adresy From

Tretia príčina si zaslúži bližší pohľad, pretože mnohé nastavenia formulárov ju majú predvolene zabudovanú. DMARC kontroluje, či doména vo viditeľnej adrese From zodpovedá doméne, za ktorú ručí SPF alebo DKIM. Ak formulár posiela správu „od“ adresy návštevníka, Váš server nie je oprávnený posielať za túto doménu, a tak kontrola zlyhá. V závislosti od politiky DMARC domény návštevníka a od Vášho vlastného poskytovateľa e-mailu správa skončí v spame alebo je odmietnutá. Riešenie je jednoduché: posielajte z adresy na vlastnej doméne a adresu návštevníka uveďte v poli Reply-To. Kliknutím na „Odpovedať“ sa k návštevníkovi stále dostanete.

Dva spôsoby, ako odoslať tú istú správu z formulára
Krehké
  • From: adresa návštevníka
  • Žiadne Reply-To
  • PHP mail() priamo z webového servera
  • Žiadne SPF, DKIM ani DMARC pre odosielajúcu doménu
  • Správa existuje len ako e-mail
Robustné
  • From: adresa na vlastnej doméne, napr. formular@vasadomena
  • Reply-To: adresa návštevníka
  • SMTP s autentifikáciou alebo služba na odosielanie
  • SPF, DKIM a DMARC nastavené a zosúladené
  • Kópia sa ukladá aj do databázy
Pravý stĺpec nie je o moc viac práce – ide hlavne o konfiguráciu.

Čo robiť

  1. 1Pravidelne posielajte cez svoj formulár testovaciu správu – aspoň raz mesačne a vždy po aktualizáciách, zmenách témy alebo zmenách nastavení pošty. Jasne ju označte ako test, aby na ňu nikto neodpovedal.
  2. 2Poznajte svoj bežný rytmus. Ak formulár zvyčajne prinesie niekoľko správ týždenne, dva týždne ticha sú dôvodom na kontrolu, nie pokojný mesiac.
  3. 3Posielajte cez SMTP s autentifikáciou – prostredníctvom svojho poskytovateľa e-mailu alebo špecializovanej služby na odosielanie – namiesto spoliehania sa na PHP mail().
  4. 4V poli From používajte vlastnú doménu a v Reply-To adresu návštevníka. Potom pre túto doménu nastavte SPF, DKIM a DMARC, aby správy prešli kontrolami.
  5. 5Uchovávajte kópiu každého odoslania v databáze. Mnohé pluginy formulárov to ponúkajú, niekedy ako doplnok. Ak pošta zlyhá, dopyty sú stále k dispozícii.
  6. 6Po každej aktualizácii pluginu skontrolujte formulár – vrátane CAPTCHA a aj s odmietnutými cookies.

Na kontroly, ako sú tieto, sa ľahko zabúda, a preto sa oplatí ich automatizovať. S účtom a overenou doménou môže formexposed poslať jasne označené testovacie odoslanie a overiť, či skutočne dorazí (kontrola doručenia, len po zapnutí). Rozpozná aj ticho – keď formulár, ktorý bežne dostáva správy, zrazu nedostáva žiadne – a kontroluje SPF, DKIM a DMARC e-mailov s oznámeniami, ako aj platnosť certifikátu TLS a domény. Upozornenie dostanete len vtedy, keď sa niečo zmení.

Ak sa chcete len prvýkrát pozrieť: bezplatná kontrola na formexposed.com nepotrebuje účet a nič neodosiela. Okrem iného ukáže, či je CAPTCHA prítomná, ale pokazená – widget bez skriptu, verejný testovací kľúč, chyby v prehliadači –, čo je jeden z tichších spôsobov, ako formulár prestane fungovať. Či správy skutočne prichádzajú, potvrdí len skutočná testovacia správa, preto ju pošlite ešte dnes.