Comment envoyer des e-mails automatisés en Python
Alors que les clients de messagerie commerciaux offrent la commodité d'une interface graphique conviviale, ils manquent souvent de la flexibilité et de la personnalisation que de nombreux développeurs ou créateurs de contenu souhaitent pour leurs besoins en matière de courrier électronique.
Que ce soit pour envoyer un e-mail de remerciement à un nouvel abonné sur votre canal de réseau social ou pour ajouter une fonctionnalité de messagerie à votre dernier projet, la possibilité d'envoyer des messages automatisés à l'aide de SMTP en Python est certainement utile.
Lisez la suite pour découvrir comment vous pouvez obtenir un script Python pour envoyer des e-mails en cours d'exécution sur votre machine aujourd'hui.
Qu'est-ce que SMTP?
Pour faire simple, SMTP, ou Simple Mail Transfer Protocol, est un protocole de communication permettant aux serveurs de messagerie de transmettre des e-mails sur Internet.
Il fait partie intégrante de la couche application de la suite TCP / IP, qui est un ensemble de protocoles utilisés pour la communication sur Internet ou d'autres réseaux similaires. Dans un réseau où SMTP est implémenté, un processus appelé stockage et transfert permet de déplacer le courrier sur les réseaux.
À chaque point de terminaison, un logiciel appelé Mail Transfer Agent (MTA) utilise le stockage et le transfert pour faciliter la communication entre les serveurs SMTP participants. Le rôle principal de SMTP est donc simplement de dicter où et comment le courrier se déplace d'un point à un autre dans un réseau.
Commencer
Vous devez avoir un compte de messagerie à utiliser pour envoyer des e-mails à l'aide de ce programme. En effet, nous utiliserons le service SMTP du client de messagerie pour envoyer des e-mails. Pour ce didacticiel, nous utiliserons Gmail.
Vous pouvez également utiliser un serveur de débogage SMTP local pour envoyer des e-mails de test, mais pour l'instant, nous allons utiliser un compte de messagerie pour envoyer des e-mails car c'est plus intuitif.
Il est possible d'utiliser simplement un compte Gmail existant, mais au fur et à mesure que vous jouez avec votre programme, il peut bientôt se remplir d'e-mails de test. C'est pourquoi nous vous recommandons de créer un compte «jetable» à des fins de test.
Maintenant, activez l'option permettant aux applications moins sécurisées d'accéder à votre compte Gmail. C'est une autre raison d'utiliser un e-mail jetable, car il n'est pas recommandé de jouer avec les paramètres de confidentialité de votre e-mail principal.
Ecrire l'e-mail en Python
Python 3 est préinstallé avec un module appelé smtplib (abréviation de smtp library), qui peut être utilisé pour travailler avec des serveurs SMTP.
Comme tout autre module Python, la première chose à faire est d'importer smtplib.
import smtplib
Initialisation d'un objet SMTP
Désormais, vous pouvez utiliser smtplib pour créer un objet SMTP, qui vous fournira la plupart des fonctionnalités d'un client de messagerie conventionnel. Cependant, les fonctions d'un objet SMTP ne peuvent être utilisées que via des méthodes d'instance. Donc, naturellement, l'étape suivante consiste à déclarer une instance d'objet.
mySMTP = smtplib.SMTP("smtp.google.com")
Cela configure l'objet SMTP pour envoyer des e-mails à l'aide du serveur SMTP de Google.
Après cela, nous spécifions les e-mails de l'expéditeur et du destinataire. Voici où le compte Gmail que vous avez créé précédemment est utile.
emailSender = “[email protected]”
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
Une chose à noter ici est que la liste des destinataires est en fait un tableau, ce qui signifie qu'elle est conçue pour stocker des valeurs non atomiques. En conséquence, vous pouvez même spécifier une liste de diffusion entière dans ce champ!
Rédaction du message
Sans doute la partie la plus simple du processus, vous devez ici saisir des valeurs que vous ajouteriez normalement lors de la rédaction d'un nouvel e-mail. Ceci comprend:
- Détails de l'expéditeur
- Détails du destinataire
- Sujet
- Corps du message
Ces champs sont placés entre guillemets triples et sont délimités comme suit:
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
Envoi de l'e-mail
Enfin, nous pouvons utiliser la commande sendmail pour envoyer le courrier de votre serveur SMTP vers le serveur du destinataire.
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
Maintenant, il n'y a qu'une dernière étape: réorganiser le code pour éviter tout blocage prévisible du programme.
Dépannage de votre programme de messagerie Python
Parfois, votre serveur SMTP peut ne pas établir de connexion avec celui du destinataire, ou il peut y avoir un problème avec l'envoi d'un e-mail d'un port SMTP à un autre. Dans un tel cas, votre programme peut se bloquer de manière inattendue.
Pour tenir compte de ces possibilités, vous pouvez utiliser un bloc try-except et placer les instructions sujettes aux erreurs dans le bloc try . L'ensemble de votre programme, ainsi que le bloc try-except, devrait ressembler à ceci:
import smtplib
emailSender = “[email protected]”
myThroaway = '[email protected]'
emailRecipients = [myThroaway]
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
smtpObj = smtplib.SMTP('smtp.gmail.com')
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
print (“Email sent successfully!”)
except SMTPException:
print ("Error: There was an error in sending your email.")
Sécuriser vos e-mails
Si vous avez l'intention d'utiliser Python dans un environnement réel pour envoyer des e-mails, il est important de vous assurer que la communication est sécurisée des deux côtés.
L'utilisation d'un simple serveur SMTP avec le port par défaut ne fournit aucune couche de cryptage à la communication. Cela signifie que si un tiers écoute sur votre réseau, il peut accéder à vos identifiants de connexion et aux informations contenues dans votre e-mail.
Une façon de contourner ce problème consiste à utiliser le protocole TLS (Transport Layer Security) pour crypter votre communication. Il s'agit du même protocole utilisé par les principaux clients de messagerie tels que Gmail et Outlook pour garantir que vos e-mails ne tombent jamais entre de mauvaises mains.
Pour ce faire, nous devons apporter quelques modifications mineures au programme que nous avons créé précédemment.
La première étape, bien sûr, est d'importer la bibliothèque ssl avec smtplib . La bibliothèque SSL vous permet de créer un contexte SSL sécurisé et de communiquer sur un réseau crypté en vous connectant à des ports spécifiques aux deux extrémités.
Un contexte SSL sécurisé n'est rien d'autre qu'une collection de chiffrements, de versions de protocole, de certificats de confiance, d'options TLS et d'extensions TLS.
Ensuite, nous pouvons spécifier le port TLS et ajouter quelques fonctions de bibliothèque SSL pour créer un emailer sécurisé.
Le code, avec toutes les modifications apportées, ressemble à ceci:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
password = "my_password"
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
server = smtplib.SMTP(smtpServer,port)
server.starttls(context=context)
server.login(newEmail, password)
except Exception as e:
print("the email could not be sent.")
finally:
server.quit()
Comme précédemment, vous devez créer et utiliser l'instance SMTP dans un bloc try-except afin d'éviter tout blocage brutal du programme.
Ce que vous pouvez faire avec ce script Python
Maintenant que vous avez acquis la compétence impressionnante et étonnamment utile d'automatisation des e-mails à l'aide de code, vous pouvez l'appliquer à n'importe quelle plate-forme qui nécessite l'envoi d'e-mails à une liste de diffusion diversifiée.
De son utilisation sur votre site Web personnel pour envoyer des e-mails de confirmation automatisés à son utilisation pour envoyer des cartes de Noël ou des invitations à votre famille et à vos amis, les utilisations de ce petit script Python ne sont limitées que par votre propre créativité.
En outre, ce n'est qu'une des nombreuses choses impressionnantes que vous pouvez faire avec Python. Avec son support de développement omniprésent et sa syntaxe facile à apprendre, acquérir une compétence Python n'a jamais été aussi simple.
Pour continuer à créer des choses sympas avec du code, consultez notre guide sur la création de votre propre bot Telegram avec Python 3 !