Kontaktní formulář s automatickou odpovědí
Kompletní postup – kontaktní formulář, který pošle zprávu vám a návštěvníkovi poděkuje – teď najdete v Návodu. Pro tento recept jsou nejdůležitější tyto kroky:
Až vám to poběží, stojí za to podívat se i na tyhle doplňky.
Ukládejte odesílatele do kontaktů
Sekce “Ukládejte odesílatele do kontaktů”Šablona Kontaktní formulář z galerie má Sběr kontaktů už zapnutý (v šabloně Nastavení →
Sběr kontaktů, volba Sbírat kontakty z této šablony), s Parametrem s e-mailem email
a Parametrem se jménem name. Každá úspěšně odeslaná zpráva vytvoří nebo aktualizuje záznam
v Kontaktech. Chcete-li ke kontaktu ukládat i další parametry, vypište je čárkami v poli
Další pole. Viz Sběr kontaktů.
Ptejte se na víc než jen na zprávu
Sekce “Ptejte se na víc než jen na zprávu”Na kartě Parametry přidejte do šablony další pole a do formuláře k nim vstupy se stejným
name. Hodnoty z formuláře přicházejí jako text a Frontmail je převede na deklarovaný typ, třeba:
| Parametr | Typ | Pole ve formuláři |
|---|---|---|
topic |
enum, Povolené hodnoty sales, support, other |
<select name="topic"> |
newsletter |
boolean, Výchozí hodnota false |
<input type="checkbox" name="newsletter"> – zaškrtnuté je true, nezaškrtnuté použije výchozí hodnotu |
{{#if newsletter}}<p>Chce odebírat newsletter.</p>{{/if}}Podrobnosti: převod hodnot z formulářů.
Ukažte chyby validace u polí
Sekce “Ukažte chyby validace u polí”Když hodnota poruší pravidlo parametru (neplatný e-mail, chybějící povinné pole, moc krátká
zpráva), požadavek skončí chybou
invalid_template_params a nic se neodešle.
Chyba obsahuje seznam všech problémů, takže je můžete ukázat u správného pole:
try { await frontmail.sendForm(null, 'tpl_…', form);} catch (err) { form.querySelectorAll('.field-error').forEach((el) => (el.textContent = '')); for (const issue of err.details?.issues ?? []) { // např. <small class="field-error" data-for="email"></small> pod každým polem const el = form.querySelector(`.field-error[data-for="${issue.param}"]`); if (el) el.textContent = issue.message; }}Viz Zpracování chyb.
Zpevněte ochranu proti spamu
Sekce “Zpevněte ochranu proti spamu”Povolené weby a CAPTCHA Turnstile (krok 4 návodu) zastaví většinu zneužití. U hodně navštěvovaného veřejného formuláře můžete navíc:
- v Zabezpečení → Ochrana proti zneužití zapnout Blokovat headless prohlížeče,
- snížit Limit požadavků na IP adresu,
- do Seznamu blokovaných hodnot zapsat adresy nebo domény, od kterých nic nechcete,
- v šabloně nastavit Záložní službu (Nastavení → Doručování), aby výpadek poskytovatele vaše zprávy nezdržel.
Viz Ochrana proti botům.