Lunedì, 17 Dicembre 2018 20:22

Un esempio per automatizzare l'invio di mail con Python

Scritto da

Python nasce come linguaggio di scripting per automatizzare le operazioni lunghe e ripetitive sia creando script da far girare sul nostro pc, sia ultimamente come sistemi orientati al web con i framework per siti Django o Flask o alla robotica con RaspBerry e simili.

Quale miglior esempio allora se non quello di automatizzare l'invio delle mail?  Voi direte: "basta usare un client di posta di quelli che abbiamo online senza complicarsi la vita". Vero. Ma se la mail che dobbiamo scrivere è personalizzata in base a certi parametri degli utenti a cui è destinata? Non esiste client di posta che permetta ad esempio di creare testi su misura o inserirci elementi variabili/progressivi! Ecco allora che Python ci viene incontro.

Per provare questo esercizio ci occorre un server SMTP, Simple Mail Transfer Protocol. Probabilmente avete gia una mail che consultate online come GMail, Libero ecc. ma non vogliamo scomodare o riempire di test le nostre mail. Allora per l'occasione ho provato un servizxio di fake mail, mail fasulle con DevelMail. E' un server su cui potete creare una serie di caselle di mail di prova con tutte le configurazioni del caso in chiaro. Date un'occhiata al link o all'immagine del mio account

 

 

Ecco il codice di prova. Si lascia però al lettore l'esercizio di automatizzare con le opportune variabili, liste, cicli ed input la creazione della mailing list.

 

"""
Voglio effettuare l'invio di mail senza usare un client mail un po' come accade quando compilo le form online
Per farlo usiamo il protocollo SMTP (Simple Mail Transfer Protocol) e la sua versione Python
"""

import smtplib
from email.mime.text import MIMEText

server = smtplib.SMTP('smtp.develmail.com', 587)

#Mi sono creato un account fasullo su questo server develmail
#così lo possiamo usare senza fare danni!
#il login è fasullo: un nome ed una password di prova!
server.starttls() #il ttls è un protocollo di sicurezza/crittografia
server.login("OCUQJ5QOP2AQ6", "2Z6AR6ZNGABQM")

# Costruiamo email
msg = MIMEText('Questo è il testo della mail')
msg['To'] = "Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo."
msg['From'] = "Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo."
msg['Subject'] = 'Test Email con Python'

#mittente, destinatario, messaggio
try:
  server.sendmail("Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.", "Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.", msg.as_string())
  server.quit()
  print ("Mail inviata")
except Exception:
  print ("Errore: mail non inviata")

 """
Adesso che abbiamo visto come funziona la versione base, saresti in grado di automatizzare il tutto per creare una mailing-list? 
Crea una piccola interfaccia con gli input:
  - con che mail presentarti (From)
  - chiedi quanti destinatari vuoi inserire
  - crea un ciclo che ti permette di caricare su un vettore tutte le mail
  - che messaggio vuoi mandare a tutti col tuo nome e cognome ed un contatore progressivo 
  - che soggetto della mail
  - itera l'invio per ogni destinatario immesso precedentemente
 """
Letto 760 volte
Prof. Alfredo Centinaro

Docente di "Scienze e tecnologie informatiche", "Tecnologie e progettazione di sistemi informatici", "Sistemi e Reti" presso IIS Alessandrini-Marino (Teramo), consulente e sviluppatore web. Ha collaborato per anni come sviluppatore presso MHT - Treviso, assistente Sistemi ed elaborazione dell'informazione in UniTE Corso di laurea in Scienze del turismo culturale, tutor presso Telecom Italia Learning Services (L'Aquila)

Joomla SEF URLs by Artio