Home / Guide / Come creare un modulo di contatto senza server SMTP — Guida completa | Lugatu
TUTORIAL PASSO DOPO PASSO · ARCHITETTURA MODERNA

Come creare un modulo di contatto senza server SMTP — Guida completa | Lugatu

Scopri come ricevere i messaggi dei visitatori in totale sicurezza senza memorizzare credenziali SMTP nel codice, senza server di posta e senza problemi di recapito.

1. I limiti dei tradizionali moduli SMTP

Le connessioni SMTP su porte come 25 o 587 vengono spesso bloccate su piattaforme Jamstack e serverless. Inoltre, credenziali scadute provocano la perdita inconsapevole di contatti.

warning

Non memorizzare mai credenziali SMTP nei repository Git o nel codice del client. Usa endpoint protetti di acquisizione HTTPS.

2. Passo 1: Il modulo HTML con protezione honeypot

Crea il tuo modulo in HTML semantico. Includi un campo honeypot nascosto che i visitatori reali lasciano vuoto ma i bot compilano in automatico.

contact-form.html html
<!-- Vanilla HTML Form with Lugatu Form Endpoint -->
<form id="inquiry-form">
  <label for="name">Your Name</label>
  <input type="text" id="name" name="name" required />

  <label for="email">Work Email</label>
  <input type="email" id="email" name="email" required />

  <label for="message">Project Details</label>
  <textarea id="message" name="message" rows="4" required></textarea>

  <!-- Built-in Honeypot Bot Trap -->
  <input type="text" name="_gotcha" style="display:none !important" tabindex="-1" autocomplete="off" />

  <button type="submit">Send Inquiry</button>
</form>

<script>
document.getElementById('inquiry-form').addEventListener('submit', async (e) => {
  e.preventDefault();
  const form = e.target;
  const data = new FormData(form);

  const payload = {
    fields: {
      name: data.get('name'),
      email: data.get('email'),
      message: data.get('message')
    },
    honeypot: data.get('_gotcha') || ''
  };

  const res = await fetch('https://www.lugatu.com/api/v1/public/forms/YOUR_PUBLIC_FORM_ID/submissions', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
    body: JSON.stringify(payload)
  });

  if (res.ok) {
    alert('Inquiry sent successfully!');
    form.reset();
  }
});
</script>

3. Passo 2: Invio sicuro tramite Fetch API

Intercetta l’invio con JavaScript e trasmetti i campi in formato JSON all’API di Lugatu, ricevendo subito una conferma visiva per l’utente.

4. Modalità di notifica flessibili e conservazione duratura

Anche se vengono raggiunte le quote di posta elettronica in uscita, tutti gli invii rimangono conservati nella casella di posta dell'area di lavoro. Puoi scegliere Avvisi istantanei, Riepiloghi giornalieri o Riepiloghi esecutivi settimanali per modulo.

Invariante di sicurezza e autenticazione

Regola antispam: Utilizza sempre campi honeypot negli endpoint pubblici. Le chiavi API private non devono mai comparire nel codice sorgente del browser.

Risoluzione dei problemi ed errori comuni di importazione

Errore di CORS durante l’invio dal browser

Lugatu autorizza richieste JSON da qualsiasi origine su /api/v1/public/forms/.... Controlla che l’URL sia esattamente identico.

Domande frequenti

Questa procedura è valida anche su GitHub Pages o Netlify?

Sì, assolutamente. Dal momento che Lugatu si fa carico della logica backend, il modulo opera allo stesso modo su qualunque hosting statico.

Pronto per creare l'endpoint del modulo?

Inizia gratuitamente in pochi secondi. Nessuna carta di credito richiesta.

Inizia gratis →