Formulář neodesílá: kde se zpráva ztrácí a jak to ověřit

Kontaktní formulář, který nic neposílá, je nejdražší chyba na webu, protože ji nikdo nevidí. Pět míst, kde se zpráva může ztratit.

Napsal Lukáš

Počítač, notebook a tablet na stole s otevřeným webem

Zákazník vyplní poptávku, klikne na „Odeslat“, uvidí poděkování a vy se o ničem nedozvíte. Nikdo si nestěžuje, web vypadá v pořádku a poptávky prostě nepřicházejí. Proto je rozbitý formulář jedna z nejdražších chyb na webu: nikdo ji nevidí.

Zpráva se přitom může ztratit na pěti místech. Je užitečné projít je v tomto pořadí.

1. Formulář v prohlížeči

Nejdřív se ptám, jestli se formulář vůbec odešle. Chyba v JavaScriptu, špatně pojmenované políčko nebo tlačítko, které nic nespustí, jsou běžné příčiny. Otevřete stránku, vyplňte formulář a podívejte se do konzole prohlížeče (F12), jestli nehlásí chybu.

2. Skript na serveru

Data musí někdo zpracovat. Pokud skript na serveru spadne, návštěvník často stejně uvidí poděkování, protože stránka s tím nepočítá. Chybu poznáte podle logu serveru, ne podle toho, co vidí návštěvník.

3. Odeslání e-mailu

Tady se ztrácí nejvíc zpráv. Mnoho hostingů neumožňuje z webu odesílat přes SMTP server poskytovatele nebo ho zablokuje. Skript pak tiše selže.

Řešení, které používám, je odeslat přes funkci mail() hostingu pomocí PHPMailer v režimu isMail():

use PHPMailer\PHPMailer\PHPMailer;

$mail = new PHPMailer(true);
$mail->isMail();
$mail->CharSet = 'UTF-8';
$mail->setFrom('web@vasedomena.cz', 'Web');
$mail->addReplyTo($email, $jmeno);
$mail->addAddress('info@vasedomena.cz');
$mail->Subject = 'Nová poptávka z webu';
$mail->Body = $zprava;
$mail->send();

Odesílatel (setFrom) by měl být adresa na vaší doméně. Adresu zákazníka dávám do addReplyTo, aby se dalo na zprávu odpovědět. Zadanou adresu před použitím ověřte funkcí filter_var.

4. Spam a doručitelnost

Zpráva může dorazit, ale skončit ve spamu. U mail() záleží na tom, jak má hosting nastavenou doménu. Pomáhají záznamy SPF a DKIM, které poštovním serverům říkají, že e-mail z vaší domény je v pořádku. Zeptejte se u hostingu, jestli jsou nastavené.

5. Schránka příjemce

Překlep v adrese, plná schránka nebo přeposílání na starou adresu. Zní to banálně, ale stává se to častěji, než by se zdálo.

Jak to ověřit

Jediná spolehlivá zkouška je projít celou cestu: vyplnit formulář na živém webu a zkontrolovat, že zpráva skutečně dorazila do schránky, včetně složky spam. Zkoušku je dobré opakovat po každé změně webu nebo hostingu.

Pokud formulář neodesílá a nevíte proč, podívám se na to v rámci služby Oprava a údržba webu.