Come Inviare eMail con Python

ATTENZIONE: a seguito dell'aggiornamento delle politiche di sicurezza di Google, per poter utilizzare quando descritto nel tutorial seguente potreste aver bisogno di aggiungere un'eccezione per l'utilizzo di applicazioni esterne dalle impostazioni del vostro account di posta!

In questa lezione imparerermo ad automatizzare l'invio di email all'interno dei nostri programmi in Python. Ci sono varie situazioni in cui questo torna utile, specie in programmi importanti o che girano su macchine che stanno sempre connesse, capita che ci sia la necessità di essere notificati in tempo reale, e pensate a quanto tempo tra copia e incolla vi fa risparmiare quando vi trovate con dei file pieni di indirizzi a cui dovete poi inviare un messaggio. Tutto questo è reso possibile grazie al modulo smtplib, che quindi importiamo all'istante:

import smtplib


Il modulo smtplib

Questo modulo rappresenta l'implementazione in Python del protocollo SMTP, che sta per Simple Mail Transfer Protocol. Creiamo del contenuto che ci interessa inviare:

oggetto = "Subject: Urgente! da leggere subito!\n\n"
contenuto = "connettiti al Server che è meglio..."
messaggio = oggetto + contenuto

Volendo avreste potuto scrivere oggetto e contenuto nella stessa variabile, ma penso che così sia più pulito. Quindi dobbiamo specificare il server SMTP del servizio a cui vogliamo connetterci e la relativa porta di servizio associata: useremo gmail:

email = smtplib.SMTP("smtp.gmail.com", 587)

Ora possiamo connetterci al server, con:

email.ehlo()

A questo punto avviamo un canale criptato tramite:

email.starttls()

L'acronimo tls sta per Transport Layer Security, ovvero il protocollo crittografico che mette in sicurezza la nostra comunicazione col Server. Effettuiamo il login vero e proprio usando i nostri username e password:

email.login("username", "password")

Ora siamo pronti per inviare la nostra email:

email.sendmail("mittente", "destinatario", messaggio)

Una volta che il messaggio è inviato, interrompiamo la connessione col server:

email.quit()

Chiaramente tutta la potenza di questi comandi viene liberata quando vengono utilizzati all'interno di uno script, che potrete poi salvare e richiamare ogni volta che vi serve!