Salta ai contenuti

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.

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.

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.

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.

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.