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áš
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.