SMTP per Python — posta dal tuo script o dalla tua app Django che arriva
Python ha SMTP integrato: con smtplib invii un messaggio in una manciata di righe, e Django lo racchiude in un proprio livello di posta con le impostazioni EMAIL. Ciò che nessuno dei due fornisce è la recapitabilità — quella dipende dal server attraverso cui invii.
Che tu abbia uno script isolato, un'app Flask o un progetto Django: le impostazioni sono gli stessi cinque dati. Li fai puntare al tuo relay e il codice che compone i messaggi resta invariato.
Perché senza relay le cose vanno storte
La posta di Python arriva spesso dal retro: un report notturno, un'attività cron che invia fatture, uno script che avvisa quando una misura esce dai margini. Nessuno ci sta guardando — e quindi nessuno si accorge che il server ricevente le rifiuta in silenzio. Con Django si aggiunge la classica sorpresa del passaggio in produzione: in sviluppo tutto va alla console, in produzione verso provider reali che controllano davvero la reputazione.
Configurare l'SMTP in Python
Recupera i dati
Accedi al tuo account 2mail e recupera lì il tuo server SMTP, il nome utente e la password.
Inserisci in Python
In un progetto Django imposti le impostazioni EMAIL nei settings: il backend SMTP come backend di posta, l'host del relay, la porta 587, l'opzione STARTTLS attiva, nome utente e password e un indirizzo mittente predefinito sul tuo dominio. Se lavori direttamente con smtplib, ti connetti all'host sulla porta 587, chiami starttls, effettui l'accesso con nome utente e password e invii poi il messaggio. In entrambi i casi leggi i dati da variabili d'ambiente, non dal codice.
Autentica il dominio
Assicurati che SPF, DKIM e DMARC siano configurati correttamente per il tuo dominio, così i destinatari possono verificare che il messaggio provenga da te.
Prova
Invia un messaggio di prova a un indirizzo presso un grande provider e verifica che arrivi nella posta in arrivo e non nella cartella spam.
I campi richiesti da Python
Ogni piattaforma li chiama in modo leggermente diverso, ma si tratta sempre degli stessi cinque. I valori concreti sono legati al tuo account e li trovi nel tuo account 2mail — recuperali da lì, così sei certo di usare quelli giusti.
| Campo | Che cosa inserire |
|---|---|
| Server SMTP (host) | Il nome del server dal tuo account 2mail. |
| Porta | La porta corrispondente alla cifratura scelta; il tuo account indica quale. |
| Cifratura | TLS. Non inviare mai in chiaro — altrimenti le tue credenziali viaggiano leggibili sulla rete. |
| Nome utente | Il login SMTP del tuo account 2mail. |
| Password | La password corrispondente. Non usare mai la password della casella di posta di un collaboratore. |
Quali e-mail invia Python
Una volta configurato il relay, tutte queste passano tramite 2mail — non devi configurarle una per una.
Insidie con Python
Opzione TLS e porta devono coincidere
Django prevede due impostazioni TLS separate: una per STARTTLS e una per TLS fin dall'inizio. Attiva solo l'impostazione STARTTLS; è quella corrispondente alla porta 587. Attivarle entrambe genera un errore di configurazione; non attivarne nessuna invia le tue credenziali in chiaro, e un relay giustamente lo rifiuta.
Una connessione per serie, non per messaggio
Uno script che apre una nuova connessione SMTP per ciascuno di mille messaggi si comporta come un aggressore. Apri una connessione, invia la serie, chiudi. Django dispone di una funzione per inviare più messaggi su una sola connessione.
Errori silenziosi nelle attività in background
Un'eccezione in un'attività cron sparisce in un file di log che nessuno legge. Intercetta gli errori di invio e segnalali dove si notano — e collega i webhook di 2mail per recapito e bounce, così vedi anche ciò che va storto <em>dopo</em> la consegna.
Un'altra piattaforma?
L'SMTP è un protocollo standard: ogni sistema che parla SMTP — un CRM, un ERP, un'applicazione proprietaria o un server — può inviare tramite 2mail con gli stessi cinque campi.