Email che arrivano

Un messaggio di benvenuto, mandato una sola volta al primo uso di un account, e un avviso a chi ha ricevuto un documento condiviso.

Entrambi hanno richiesto tre tentativi. L’avviso era attaccato a un endpoint che l’applicazione non chiama mai, poi partiva dopo la risposta, così la richiesta non lasciava mai la funzione, e infine si è fermato su una chiave davvero assente dalle prime build. La recapitabilità voleva DMARC, non solo SPF e DKIM.

La posta di un prodotto è per lo più una cosa di cui diffidare, quindi vale la pena dire quanta poca ce ne sia qui. Due messaggi: un benvenuto, la prima volta che un account viene davvero usato, e un avviso a chi un account ha condiviso un documento. Nessun riepilogo, nessuna novità di prodotto, niente da cui devi disiscriverti.

Perché non arrivavano

Tre difetti, uno dopo l’altro. L’avviso era collegato in un primo momento a un endpoint che l’applicazione non chiama mai. Poi è stato corretto perché partisse dopo che la risposta era uscita — la cosa che viene naturale scrivere e quella sbagliata in una funzione serverless, perché la piattaforma può congelare l’istanza nell’istante in cui una risposta parte, e una richiesta non ancora uscita non esce più. Su un deploy in servizio sono stati aggiunti tre indirizzi e il fornitore di posta non ha registrato nulla: non un errore, un’assenza.

Un invio fa quindi ora parte della richiesta che lo ha provocato e viene atteso, con un limite di quattro secondi perché un fornitore in un minuto storto non trasformi una condivisione in una condivisione lenta. Il terzo difetto era più scialbo degli altri due: la chiave mancava davvero dalle prime build.

Perché finivano nello spam

SPF e DKIM c’erano fin dall’inizio e non sono mai stati il problema. Quello che mancava era DMARC — il record DNS che dice a un destinatario che cosa fare della posta che fallisce gli altri due — e un dominio giovane che manda posta automatica senza di esso viene trattato con durezza. Quello è DNS e non codice, ed è in parte il motivo per cui ci sono voluti tre tentativi.

Quello che il codice può fare è non peggiorare le cose. Entrambe le parti MIME invece del solo testo, perché un messaggio automatico di solo testo da un dominio senza storia di invii è ciò di cui un filtro diffida di più. Un oggetto che comincia con il nome del documento invece che con un indirizzo nudo accanto a un nome di file fra virgolette, una coppia la cui forma i filtri conoscono. E un Reply-To che punta alla persona che ha condiviso, perché un messaggio a cui non puoi rispondere si legge come macchinario.

Che cosa non sono questi messaggi

Nessuna immagine e nessun pixel di tracciamento; la parte HTML sono le stesse parole della parte testuale, composte dal convertitore del prodotto stesso. Il nome di un documento è stampato dentro un frammento di codice, così un file chiamato [Confirm your account](https://elsewhere.example) arriva come testo e non come link vivo in un messaggio che porta la nostra firma. Un deploy senza chiave configurata non manda nulla e non dice nulla, e una condivisione riuscita non viene mai segnalata come fallita solo perché la posta non è partita. Tutto è in inglese qualunque sia la tua lingua: va a un indirizzo di cui non sappiamo altro.

Da leggere: condividere un documento con un link e se un convertitore online è sicuro.