Salta ai contenuti

Resend

Resend è un’API email moderna, pensata prima di tutto per gli sviluppatori, con una dashboard pulita e una configurazione del dominio rapida. È perfetta per i nuovi progetti che vogliono avere le email transazionali funzionanti in pochi minuti.

Scegli Resend quando inizi un nuovo progetto, ti piacciono gli strumenti semplici e invii volumi transazionali medio-bassi. Il piano gratuito è piccolo, ma basta per la maggior parte dei moduli di contatto. Per volumi molto alti al prezzo più basso guarda Amazon SES; per marketing e transazionali ospitati nell’UE, Brevo o Mailjet. Vedi la panoramica dei servizi.

  • Un account Resend.
  • Un dominio verificato (Domains → Add domain). Senza, puoi inviare solo email di prova da onboarding@resend.dev all’indirizzo del tuo account: vedi Sandbox e limiti.
  • Una chiave API con “Sending access” (non “Full access”): API Keys → Create API key → Permission: Sending access, eventualmente limitata a un solo dominio. È il permesso minimo di cui Frontmail ha bisogno. Prova connessione riconosce una chiave di solo invio e la accetta.
  1. Apri Servizi email → Aggiungi servizio → Resend.
  2. Compila i campi:
Campo Dove trovarlo Esempio
Chiave API API Keys (mostrata una sola volta) re_123abc456def…
Segreto di firma del webhook Webhooks → il tuo endpoint → Signing secret whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Max email al secondo Facoltativo; predefinito 2/s (il limite predefinito del team in Resend) 2
  1. Clicca Verifica e salva.
  2. Il servizio viene salvato quando il controllo va a buon fine. Le credenziali sono cifrate con AWS KMS (envelope encryption).

Resend mostra i record nella pagina del dominio. Per example.com hanno questo aspetto:

; DKIM
resend._domainkey.example.com. TXT "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ…"
; SPF + gestione dei bounce sul sottodominio "send" (il mittente della busta)
send.example.com. MX 10 feedback-smtp.us-east-1.amazonses.com.
send.example.com. TXT "v=spf1 include:amazonses.com ~all"
; DMARC (consigliato da Resend, non viene creato automaticamente)
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
  • Il sottodominio send porta l’SPF, quindi non devi toccare il record SPF del dominio principale.
  • L’host MX contiene la regione che hai scelto per il dominio (us-east-1, eu-west-1, …).
  • Alcuni provider DNS aggiungono il dominio automaticamente: inserisci resend._domainkey e send come nomi host, non i nomi completi.
  • Inizia DMARC con p=none, poi rendilo più restrittivo (p=quarantine / p=reject).

Quando aggiungi un dominio, Resend ti permette di scegliere la sua regione di invio, ad es. Virginia del Nord (us-east-1), Irlanda (eu-west-1), San Paolo (sa-east-1) o Tokyo (ap-northeast-1). L’endpoint API (api.resend.com) è lo stesso per tutte le regioni, quindi in Frontmail non c’è un campo per la regione: la regione è una proprietà del dominio. Per cambiarla, aggiungi di nuovo il dominio con la nuova regione e aggiorna il DNS.

  • Senza un dominio verificato puoi inviare solo da onboarding@resend.dev e solo all’indirizzo email del tuo account Resend. Tutto il resto fallisce con 403 – You can only send testing emails to your own email address, che Frontmail tratta come errore di autenticazione.
  • Piano gratuito: 3.000 email al mese, 100 al giorno, 1 dominio.
  • Limite di frequenza: per impostazione predefinita 2 richieste al secondo per team; per questo il valore predefinito di Frontmail per Resend è 2/s. Resend può aumentarlo su richiesta.
  • Il superamento della quota giornaliera o mensile restituisce 429 daily_quota_exceeded / monthly_quota_exceeded; ritentare non serve finché la quota non si azzera, quindi questi messaggi di solito finiscono come failed con il credito rimborsato.
  1. Copia l’URL del webhook dalla pagina del servizio in Frontmail (pulsante di copia):

    https://api.frontmail.dev/webhooks/providers/resend/<token>
  2. In Resend apri Webhooks → Add endpoint, incolla l’URL e seleziona gli eventi:

Evento Resend Evento Frontmail
email.delivered delivered
email.bounced (Permanent) bounced – aggiunto alla lista di soppressione
email.bounced (Transient / altro) registrato come soft bounce
email.delivery_delayed registrato sul messaggio
email.complained complained – aggiunto alla lista di soppressione
email.opened opened (attiva il tracciamento delle aperture sul dominio)
email.clicked clicked (attiva il tracciamento dei clic sul dominio)
  1. Apri l’endpoint, copia il Signing secret (whsec_…) e incollalo nel campo Segreto di firma del webhook di Frontmail.

Verifica della firma: Resend consegna i webhook tramite Svix. Frontmail controlla le intestazioni svix-id, svix-timestamp e svix-signature (HMAC-SHA256 di id.timestamp.body con il tuo segreto di firma) e rifiuta le richieste con un timestamp che si discosta di più di 5 minuti. Senza il segreto gli eventi non vengono verificati e vengono ignorati.

Frontmail aggiunge a ogni email un tag con l’ID del messaggio, così gli eventi possono essere associati.

  • auth – il servizio non funziona (chiave non valida o eliminata, dominio non verificato, restrizioni della modalità di test, 401/403). Il servizio viene segnato come unhealthy; il proprietario riceve un’email e un banner nella dashboard. Subentra il servizio di riserva del modello, se c’è; altrimenti il credito viene rimborsato e il messaggio aspetta nella coda dei messaggi in attesa come held_service_error e viene inviato automaticamente dopo che avrai sistemato il servizio (ricontrollato al salvataggio e dal controllo di stato giornaliero).
  • permanent – questo messaggio non può essere inviato (destinatario non valido, validazione 422). Servizio di riserva se configurato, altrimenti failed e rimborsato.
  • transient – 5xx, 429, timeout. Ritentato con backoff esponenziale; dopo l’ultimo tentativo failed e rimborsato.
Risposta di Resend Classe Cosa fare
401 missing_api_key / 403 invalid_api_key auth Crea una nuova chiave Sending access e aggiorna il servizio.
403 validation_error – The example.com domain is not verified auth Completa la verifica del dominio in Resend o correggi il dominio del mittente nel modello.
403 validation_error – You can only send testing emails to your own email address auth Verifica il tuo dominio; il mittente di prova resend.dev serve solo per la tua casella.
422 validation_error – Invalid to field permanent Vedi destinatario non valido.
422 invalid_attachment / 422 validation_error (altri campi) permanent Correggi il modello o l’allegato; vedi Modelli HTML.
429 rate_limit_exceeded transient Troppe richieste al secondo; tieni Max email al secondo a 2 o chiedi a Resend un limite più alto.
429 daily_quota_exceeded / monthly_quota_exceeded transient Quota esaurita; passa a un piano superiore.
500 internal_server_error, timeout transient Disservizio di Resend: Frontmail ritenta.
  • Dominio verificato: TXT resend._domainkey + MX e TXT di send
  • Record DMARC pubblicato (p=none per iniziare)
  • Chiave API con solo Sending access
  • Prova connessione va a buon fine
  • Indirizzo mittente del modello sul dominio verificato (non resend.dev)
  • Endpoint webhook con delivered, bounced, complained (+ opened/clicked)
  • Segreto di firma (whsec_…) copiato in Frontmail