Icône Python avec une image d'enveloppe représentant l'envoi d'e-mails via Python.

Comment envoyer un e-mail avec Python?

La programmation vous intéresse ? Vous avez envie de découvrir les bases d’un langage de programmation couramment utilisé de manière intuitive ? Alors vous êtes au bon endroit ! À l’issue de cette lecture, vous aurez connaissance de toutes les notions de base pour programmer en Python ! Des variables aux fonctions en passant par les boucles, les outils de Python n’auront plus de secret pour vous. 

Il existe des outils comme Prometheus qui permettent de définir ces  alertes et le comportement à adopter mais il peut aussi être intéressant de savoir envoyer un e-mail avec les librairies de base de Python.

Tout d’abord, il nous faut, évidemment, une adresse e-mail. Celle-ci est hébergée par un fournisseur qui peut mettre à notre disposition les informations concernant le serveur SMTP (Simple Mail Transfer Protocol): une adresse et un port (en général 465 ou 568).

Par exemple: 

  • Gmail: smtp.gmail.com 
  • YahooMail: smtp.mail.yahoo.com
  • Outlook: smtp.office365.com

Derrière, il suffit de se connecter à notre serveur SMTP en utilisant les librairies smtplib et ssl de Python:

import smtplib
import ssl

port = 465  # Port SSL
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "votre_mot_de_passe"

message = """\
Subject: Test email

Ceci est un email envoyé depuis Python.
"""

context = ssl.create_default_context()

with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

print("Email envoyé avec succès !")

C’est pas plus compliqué que ça. Alors bien sûr, l’e-mail n’est pas très beau et n’a pas d’objet mais on a la base…

Essayons à présent d’avoir un e-mail un peu plus abouti en utilisant du HTML. Pour cela, on va utiliser la librairie email:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

smtp_server = "smtp.gmail.com"
port = 587
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "votre_mot_de_passe"

message = MIMEMultipart("alternative")
message["Subject"] = "Email HTML depuis Python"
message["From"] = sender_email
message["To"] = receiver_email

html = """\
<html>
  <body>
    <h1>Bonjour 👋</h1>
    <p>Ceci est un email <b>HTML</b> envoyé avec Python.</p>
  </body>
</html>
"""

part = MIMEText(html, "html")
message.attach(part)

with smtplib.SMTP(smtp_server, port) as server:
    server.starttls()
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message.as_string())

print("Email HTML envoyé !")

Ce n’est pas beaucoup plus compliqué que ça. Cela dit, ce n’est pas une raison pour se lancer dans l’arnaque, ni dans le spam.

L’envoi de mails n’est certes pas l’outil le plus fréquemment utilisé par les Data Scientists et les Data Engineers mais parfois, il s’avère que c’est la façon la plus simple de prévenir qu’un événement est arrivé. 

Liora (ex DataScientest) est un institut de formation technologique fondé en 2017, qui figure parmi les acteurs de référence du secteur. Liora propose des formations à distance, en bootcamp ou en temps partiel, dans les métiers de la data, du cloud, de l’intelligence artificielle, du développement informatique, de la cybersécurité et de la transformation digitale. La méthode pédagogie est basée sur 80% de pratique asynchrone via une plateforme propriétaire ready to code, et 20% d’accompagnement en direct avec mentors et coachs carrière. Les formations permettent de valider des certifications RNCP de niveau 6 ou 7, souvent accompagnées d’un certificat de reconnaissance délivré par de grandes institutions françaises (Mines Paris, La Sorbonne, ECE, INSEEC, etc.). Elles préparent également à des certifications officielles délivrées par des entreprises technologiques majeures comme Microsoft, AWS ou Google Cloud. À ce jour, Liora compte plus de 50 000 alumni, répartis à travers le monde.

Liora – Your future. Decoded.