Modulo di contatto con risposta automatica
La guida completa – un modulo di contatto che ti invia un’email e ringrazia il visitatore – ora si trova nel Tutorial. I passaggi più importanti per questa ricetta:
Quando tutto funziona, vale la pena dare un’occhiata anche a questi extra.
Salva i mittenti come contatti
Sezione intitolata “Salva i mittenti come contatti”Il modello Modulo di contatto della galleria ha già la Raccolta contatti attiva (nel modello
Impostazioni → Raccolta contatti, opzione Raccogli contatti da questo modello) con
Parametro email email e Parametro nome name. Ogni messaggio inviato con successo crea o
aggiorna una voce in Contatti. Se vuoi salvare con il contatto anche altri parametri, elencali
separati da virgole in Campi aggiuntivi. Vedi Raccolta contatti.
Chiedi più di un semplice messaggio
Sezione intitolata “Chiedi più di un semplice messaggio”Aggiungi campi al modello nella scheda Parametri, poi aggiungi al modulo degli input con lo
stesso name. I valori del modulo arrivano come testo e Frontmail li converte nel tipo dichiarato,
per esempio:
| Parametro | Tipo | Campo del modulo |
|---|---|---|
topic |
enum con Valori consentiti sales, support, other |
<select name="topic"> |
newsletter |
boolean, Valore predefinito false |
<input type="checkbox" name="newsletter"> – selezionato diventa true, non selezionato usa il valore predefinito |
{{#if newsletter}}<p>Vuole ricevere la newsletter.</p>{{/if}}Dettagli: conversione dei valori dei moduli.
Mostra gli errori di validazione accanto ai campi
Sezione intitolata “Mostra gli errori di validazione accanto ai campi”Quando un valore viola una regola di un parametro (email non valida, campo obbligatorio mancante,
messaggio troppo corto), la richiesta fallisce con
invalid_template_params e non viene inviato nulla.
L’errore elenca tutti i problemi, così puoi mostrarli accanto al campo giusto:
try { await frontmail.sendForm(null, 'tpl_…', form);} catch (err) { form.querySelectorAll('.field-error').forEach((el) => (el.textContent = '')); for (const issue of err.details?.issues ?? []) { // ad es. <small class="field-error" data-for="email"></small> sotto ogni campo const el = form.querySelector(`.field-error[data-for="${issue.param}"]`); if (el) el.textContent = issue.message; }}Vedi Gestione degli errori.
Rinforza la protezione dallo spam
Sezione intitolata “Rinforza la protezione dallo spam”I siti consentiti e il CAPTCHA Turnstile (passaggio 4 del tutorial) bloccano la maggior parte degli abusi. Per un modulo pubblico molto frequentato puoi anche:
- attivare Blocca i browser headless in Sicurezza → Protezione dagli abusi,
- abbassare il Rate limit per IP,
- riempire la Lista dei bloccati con indirizzi o domini da cui non vuoi ricevere nulla,
- impostare un Servizio di riserva nel modello (Impostazioni → Consegna), così un disservizio del provider non ritarda i tuoi messaggi.
Vedi Protezione dai bot.