Envoyer des emails en Python ? Pas de problème. Cet article couvre tout ce que vous devez savoir sur l’envoi d’emails en Python, y compris des exemples de code, la sécurité et le testing des emails.
Configuration de ‘smtplib‘
Le module smtplib
de Python simplifie le processus d’envoi d’emails directement depuis vos applications, offrant une interface simple pour interagir avec les serveurs SMTP.
Cette section vous guide à travers l’importation de `smtplib`, la création d’un objet SMTP pour votre serveur et l’utilisation de ses fonctions principales pour envoyer des emails. Suivez ce guide pour apprendre à intégrer des fonctionnalités d’email dans vos scripts Python.
Le module intégré smtplib peut être importé en utilisant le code suivant :
import smtplib
Pour envoyer un email plus tard, créez un objet SMTP (Simple Mail Transfer Protocol) :
smtpObj = smtplib.SMTP( [host [, port]] )
Détails des paramètres :
host
: cet argument est optionnel et représente l’hôte exécutant votre serveur SMTP. L’adresse IP de l’hôte ou un nom de domaine peut être spécifié.port
: si l’argument host est spécifié, indiquez un port où le serveur SMTP écoute.local_hostname
: si le serveur SMTP utilisé fonctionne sur votre machine locale, spécifiez localhost.
Un objet SMTP possède une méthode d’instance appelée sendmail
qui est utilisée pour envoyer un message et comporte trois paramètres :
sender
: chaîne contenant l’adresse de l’expéditeur.receivers
: liste de chaînes, une pour chaque destinataire.message
: un message sous forme de chaîne formatée comme spécifié dans les RFC.
smtpObj.sendmail(sender, receivers, message)
Pour vous assurer que le module d’email a été correctement importé et obtenir la description complète de ses classes et arguments, tapez dans une session interactive Python :
help(smtplib)
Consultez la documentation de Python pour examiner le reste des objets SMTP (par exemple, smtp.ehlo
; smtp.send_message(msg)
, etc.) et comment les utiliser.
La section suivante explique comment envoyer des emails via Python en utilisant l’Email API/SMTP de Mailtrap, une fonctionnalité de la Plateforme de l’Email Delivery de Mailtrap. D’abord, je couvrirai la méthode SMTP et ensuite, je vous montrerai comment le faire avec notre SDK Python.
Envoyer des emails en utilisant SMTP
La méthode est très similaire à celle couverte dans la section smtplib
ci-dessus, cependant, vous devez configurer des informations d’identification SMTP personnalisées. Ici, je suppose que vous êtes déjà inscrit sur Mailtrap et que vous avez vérifié votre domaine.
Si ce n’est pas le cas, consultez notre guide détaillé.
Assurez-vous également de consulter nos instructions vidéo sur comment envoyer des emails en Python avec Mailtrap en utilisant smtplib.
Note : Le code ci-dessous contient des informations d’identification fictives de Mailtrap (à l’exception de l’endpoint du serveur). Assurez-vous de les remplacer par vos véritables informations d’identification.
Voici un script de base pour envoyer des emails ‘plaintext’ avec Python en utilisant le SMTP de Mailtrap.
import smtplib
from email.mime.text import MIMEText
# Configuration
port = 587
smtp_server = "live.smtp.mailtrap.io"
login = "api" # Votre identifiant généré par Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe généré par Mailtrap
sender_email = "mailtrap@exemple.com"
receiver_email = "nouveau@exemple.com"
# Contenu en texte brut
text = """\
Salut,
Consultez le nouvel article sur le blog de Mailtrap :
Serveur SMTP pour le testing : basé sur le cloud ou local ?
https://blog.mailtrap.io/2018/09/27/cloud-or-local-smtp-server/
N'hésitez pas à nous dire quel contenu vous serait utile !
"""
# Créer un objet MIMEText
message = MIMEText(text, "plain")
message["Subject"] = "Email en texte brut""
message["From"] = sender_email
message["To"] = receiver_email
# Envoyer l'email
with smtplib.SMTP(smtp_server, port) as server:
server.starttls() # Sécuriser la connexion
server.login(login, password)
server.sendmail(sender_email, receiver_email, message.as_string())
print('Envoyé')
Explication rapide :
- Imports et configuration : J’ai importé les modules nécessaires de la bibliothèque standard de Python pour l’envoi d’emails (
smtplib
etMIMEText
). - Configuration du serveur d’email : Les détails du serveur SMTP, y compris l’adresse du serveur, le numéro du port et les informations d’authentification.
- Contenu de l’email : J’ai créé un message
MIMEText
qui ne peut contenir que du texte brut. Plus tard, je vous montrerai comment inclure des versions HTML et texte brut de l’email. - Envoi de l’email : J’ai utilisé un gestionnaire de contexte (instruction
with
) pour garantir que la connexion au serveur SMTP soit correctement fermée après l’envoi de l’email.
Astuce bonus : Le hardcoding de données sensibles telles que les informations d’identification et les informations du serveur dans votre script peut représenter un risque pour la sécurité. C’est pourquoi je recommande d’utiliser des variables d’environnement pour stocker des informations sensibles. Cela rend votre code plus sécurisé et flexible lors du passage entre différents environnements (développement, testing, production).
Envoyer un email HTML
Si vous souhaitez en savoir plus sur l’envoi d’emails HTML en Python, consultez notre tutoriel dédié.
Pour modifier le script afin d’envoyer des emails HTML (tout en incluant plusieurs destinataires), je vais ajuster la façon dont le corps de l’email est créé et attaché. Voici le script révisé :
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Configuration
port = 587
smtp_server = "live.smtp.mailtrap.io"
login = "api" # Votre identifiant généré par Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe généré par Mailtrap
sender_email = "mailtrap@exemple.com"
receiver_email = "nouveau1@exemple.com"
# Contenu de l'email
subject = "Email HTML Sans Pièce Jointe"
html = """\
<html>
<body>
<p>Salut,<br>
Ceci est un email <b>de test</b> sans pièce jointe envoyé en utilisant <a href="https://www.python.org">Python</a>.</p>
</body>
</html>
"""
# Créer un message multipart et définir les en-têtes
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
# Joindre la partie HTML
message.attach(MIMEText(html, "html"))
# Envoyer l'email
with smtplib.SMTP(smtp_server, port) as server:
server.starttls()
server.login(login, password)
server.sendmail(sender_email, receiver_email, message.as_string())
print('Envoyé')
Explication rapide :
- Joindre le contenu HTML : Le contenu HTML est joint au message de l’email en utilisant
MIMEText(html, "html")
au lieu deMIMEText(text, "plain")
. En spécifianthtml
comme deuxième argument, nous informons le fournisseur de messagerie que cette partie de l’email doit être interprétée comme du HTML.
Envoyer un email à plusieurs destinataires
Ici, je vais réutiliser le script ci-dessus et ajuster la gestion des adresses des destinataires.
import smtplib
from email.mime.text import MIMEText
# Configuration
port = 587
smtp_server = "live.smtp.mailtrap.io"
login = "api" # Votre identifiant généré par Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe généré par Mailtrap
sender_email = "mailtrap@exemple.com"
# Liste des adresses email des destinataires
receiver_emails = ["nouveau1@exemple.com", "nouveau2@exemple.com", "nouveau3@exemple.com"]
# Contenu en texte brut
text = """\
Salut,
Consultez le nouvel article sur le blog de Mailtrap :
Serveur SMTP pour le testing : basé sur le cloud ou local ?
https://blog.mailtrap.io/2018/09/27/cloud-or-local-smtp-server/
N'hésitez pas à nous dire quel contenu vous serait utile !
"""
# Créer un objet MIMEText
message = MIMEText(text, "plain")
message["Subject"] = "Email en texte brut"
message["From"] = sender_email
# Joindre la liste des emails des destinataires en une chaîne séparée par des virgules
message["To"] = ", ".join(receiver_emails)
# Envoyer l'email
with smtplib.SMTP(smtp_server, port) as server:
server.starttls() # Sécuriser la connexion
server.login(login, password)
# Boucler à travers chaque destinataire et envoyer l'email individuellement
for recipient in receiver_emails:
server.sendmail(sender_email, recipient, message.as_string())
print('Envoyé')
Explication rapide de ce qui est différent par rapport au script original plaintext
:
- Configuration des destinataires multiples : J’ai modifié la variable
receiver_email
enreceiver_emails
. Il s’agit maintenant d’une liste d’adresses email au lieu d’une seule chaîne.
- Définir l’en-tête
To
: L’en-têteTo
dans l’objet messageMIMEText
est défini en joignant la liste des emails des destinataires en une seule chaîne séparée par des virgules. Cela est important pour que l’en-tête de l’email affiche correctement tous les destinataires lorsqu’ils reçoivent l’email.- Note : Certains fournisseurs de messagerie (Outlook, Yahoo, Gmail, etc.) peuvent afficher tous les destinataires dans le champ
To
pour chaque destinataire, ce qui n’est pas souhaitable pour des raisons de confidentialité. Vous pouvez “corriger” cela en utilisantCC
et/ouBCC
.
- Note : Certains fournisseurs de messagerie (Outlook, Yahoo, Gmail, etc.) peuvent afficher tous les destinataires dans le champ
- Envoi des emails en boucle : Au lieu d’envoyer l’email une seule fois, le script boucle maintenant à travers chaque destinataire dans la liste
receiver_emails
et leur envoie l’email individuellement.
Astuce pro : ⬆️ Cette approche fonctionne bien pour un petit nombre de destinataires. Cependant, pour envoyer des emails à un grand nombre de destinataires, il pourrait être plus efficace d’utiliser la capacité du serveur SMTP à gérer plusieurs destinataires en une seule opération d’envoi, selon les limitations et politiques du serveur.
Envoyer un email avec des pièces jointes
Je vais utiliser MIMEMultipart
car les pièces jointes nécessitent un email multipart. De plus, j’utiliserai la classe MIMEBase
pour joindre des fichiers. Voici le script mis à jour :
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
# Configuration
port = 587
smtp_server = "live.smtp.mailtrap.io"
login = "api" # Votre identifiant généré par Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe généré par Mailtrap
sender_email = "mailtrap@exemple.com"
receiver_email = "nouveau@exemple.com" # Un seul destinataire
# Contenu de l'email
subject = "Email avec pièce jointe"
body = "Salut,\nCeci est un email de test avec une pièce jointe."
# Créer un message multipart et définir les en-têtes
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
# Ajouter le corps à l'email
message.attach(MIMEText(body, "plain"))
# Spécifier le chemin du fichier à joindre
filename = "path/to/votre/fichier.pdf" # Modifiez cela avec le bon chemin
# Ouvrir le fichier en mode binaire
with open(filename, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
# Encoder le fichier en caractères ASCII pour l'envoyer par email
encoders.encode_base64(part)
# Ajouter un en-tête en tant que paire clé/valeur à la partie pièce jointe
part.add_header("Content-Disposition", f"attachment; filename= {filename}")
# Ajouter la pièce jointe au message
message.attach(part)
# Envoyer l'email
with smtplib.SMTP(smtp_server, port) as server:
server.starttls()
server.login(login, password)
server.sendmail(sender_email, receiver_email, message.as_string())
print('Envoyé')
Explication rapide :
- Utilisation de
MIMEMultipart
: J’ai opté pourMIMEMultipart
pour la structure globale du message au lieu deMIMEText
pour le corps. Cela nous permet d’ajouter à la fois la partie texte et la pièce jointe en tant que parties séparées de l’email. - Ajout de la pièce jointe :
- Préparation du fichier : Le fichier à joindre est ouvert en mode binaire
rb
, et son contenu est lu. - Objet
MIMEBase
: Un objetMIMEBase
est créé pour la pièce jointe, avec le type défini surapplication/octet-stream
. Ce type est un flux binaire générique, ce qui signifie qu’il convient à tout type de fichier, et les fournisseurs de messagerie le traiteront généralement comme une pièce jointe. - Encodage : Le contenu du fichier est encodé en base64 pour s’assurer qu’il puisse être transmis en toute sécurité par email. Cela est fait en utilisant la fonction
encoders.encode_base64(part)
. - Ajout d’en-têtes : Un en-tête est ajouté à la partie pièce jointe pour indiquer le nom du fichier et le fait qu’il doive être traité comme une pièce jointe (
Content-Disposition
). - Ajout du fichier au message : La partie pièce jointe est ensuite ajoutée au message à l’aide de
message.attach(part)
.
- Préparation du fichier : Le fichier à joindre est ouvert en mode binaire
Envoyer un email avec une image intégrée
Pour envoyer des emails avec une image intégrée (dans le contenu HTML), j’utiliserai la classe MIMEImage
.
Intégrer une image directement dans l’email permet de l’afficher comme partie intégrante du contenu de l’email plutôt que comme une pièce jointe séparée. Voici comment vous pouvez le faire :
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email import encoders
import os
# Configuration
port = 587
smtp_server = "live.smtp.mailtrap.io"
login = "api" # Votre identifiant généré par Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe généré par Mailtrap
sender_email = "mailtrap@exemple.com"
receiver_email = "noveau1@exemple.com"
# Contenu HTML avec une image intégrée
html = """\
<html>
<body>
<p>Salut,<br>
Ceci est un email <b>de test</b> avec une image intégrée.<br>
Voici une image : <img src="cid:image1">.</p>
</body>
</html>
"""
# Créer un message multipart et définir les en-têtes
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "Email HTML avec image intégrée"
# Attacher la partie HTML
message.attach(MIMEText(html, "html"))
# Spécifier le chemin de votre image
image_path = "path/to/votre/image.jpg" # Modifiez cela avec le bon chemin
# Ouvrir le fichier image en mode binaire
with open(image_path, 'rb') as img:
# Joindre le fichier image
msg_img = MIMEImage(img.read(), name=os.path.basename(image_path))
# Définir l'en-tête Content-ID à utiliser dans le corps HTML
msg_img.add_header('Content-ID', '<image1>')
# Joindre l'image au message
message.attach(msg_img)
# Envoyer l'email
with smtplib.SMTP(smtp_server, port) as server:
server.starttls()
server.login(login, password)
server.sendmail(sender_email, receiver_email, message.as_string())
print('Envoyé')
Explication rapide :
- Mise à jour du contenu HTML : Le contenu HTML inclut désormais une balise
<img>
avec un attributsrc
pointant vers leContent-ID
(cid
) de l’image que vous souhaitez intégrer. Cecid
doit correspondre à la valeur de l’en-têteContent-ID
de l’image jointe. - Intégration de l’image :
- Utilisation de
MIMEImage
: Le script inclut maintenant la classeMIMEImage
pour gérer le fichier image. Cette classe est spécialement conçue pour joindre des images aux emails. - Ouverture du fichier image : L’image que vous souhaitez intégrer est ouverte en mode binaire.
- Création de l’objet
MIMEImage
: Les données binaires de l’image sont utilisées pour créer un objetMIMEImage
. Cet objet représente la pièce jointe de l’image. - En-tête Content-ID : L’objet
MIMEImage
reçoit un en-têteContent-ID
, qui est référencé par l’attributsrc
dans la balise<img>
du contenu HTML. Ce lien permet au fournisseur de messagerie d’intégrer l’image directement dans le corps de l’email au lieu de la montrer comme une pièce jointe téléchargeable. - Joindre l’image : L’objet
MIMEImage
est joint au message multipart, de la même manière que les autres parties y sont jointes.
- Utilisation de
Envoi asynchrone d’emails
Pour l’envoi asynchrone d’emails, vous devez utiliser la bibliothèque asyncio de Python avec aiosmtplib, un client SMTP asynchrone.
Cette modification permet à votre script d’envoyer des emails sans bloquer l’exécution de votre programme, le rendant plus efficace, en particulier lors de l’envoi de plusieurs emails ou de l’exécution d’autres tâches simultanément.
Par souci de simplicité, j’enverrai un email texte/brut à un seul destinataire sans pièces jointes ni images intégrées. Voici comment cela fonctionne.
Tout d’abord, assurez-vous d’installer aiosmtplib.
pip install aiosmtplib
Maintenant, voici le script :
import asyncio
from email.mime.text import MIMEText
from aiosmtplib import SMTP
async def send_email_async(sender_email, receiver_email, smtp_server, port, login, password, subject, body):
message = MIMEText(body)
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
async with SMTP(hostname=smtp_server, port=port) as smtp:
await smtp.connect()
await smtp.starttls()
await smtp.login(login, password)
await smtp.send_message(message)
async def main():
# Configuration de l'email
smtp_server = "live.smtp.mailtrap.io"
port = 587
sender_email = "mailtrap@exemple.com"
receiver_email = "noveau@exemple.com" # Un seul destinataire
login = "api" # Votre identifiant généré par Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe généré par Mailtrap
subject = "Test d'Email Asynchrone"
body = "Ceci est un email en texte brut envoyé de manière asynchrone."
await send_email_async(sender_email=sender_email, receiver_email=receiver_email, smtp_server=smtp_server, port=port, login=login, password=password, subject=subject, body=body)
print("Email envoyé de manière asynchrone.")
if __name__ == "__main__":
asyncio.run(main())
Explication rapide :
- Définition de fonction asynchrone : Le script définit maintenant des fonctions asynchrones en utilisant
async def
. - Fonctionnalité asynchrone : En utilisant
asyncio
etaiosmtplib
, le script établit une connexion SMTP de manière asynchrone, se connecte, et envoie l’email. Cette approche permet d’éviter le blocage lors de l’envoi d’emails, particulièrement utile dans les applications nécessitant de maintenir la réactivité tout en effectuant des opérations réseau. - Exécution du script : La fonction async
main
configure les détails de l’email et appellesend_email_async
pour envoyer l’email. Elle démontre comment exécuter efficacement des tâches asynchrones en Python, avecasyncio.run(main())
démarrant l’exécution asynchrone.
Envoi d’emails en masse
Le code ci-dessus utilise live.smtp.mailtrap.io
qui est l’endpoint pour les emails transactionnels. Le package de la Plateforme d’Email Delivery de Mailtrap permet d’envoyer des emails en masse via un stream séparé bulk.smtp.mailtrap.io
sous le même plan.
Maintenant, la seule chose différente est l’Hôte (endpoint), et vous devez ajuster votre script en conséquence. Mais gardez en tête que les emails Transactionnels et en Masse ont des infrastructures séparées, même si vos informations d’identification sont presque les mêmes. Cela aide à améliorer la délivrabilité et la gestion des emails.
Pour illustrer les changements, j’ai créé un script simple en utilisant l’endpoint SMTP fourni.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Configuration pour le serveur SMTP Bulk de Mailtrap
smtp_server = "bulk.smtp.mailtrap.io"
port = 587
login = "api" # Votre identifiant Mailtrap
password = "1a2b3c4d5e6f7g" # Votre mot de passe Mailtrap
sender_email = "mailtrap@exemple.com"
receiver_email = "noveau@exemple.com" # Un seul destinataire
# Créer un message MIMEText pour du texte brut
subject = "Email en texte brut via SMTP Bulk"
body = "Ceci est un email en texte brut envoyé via le serveur SMTP Bulk de Mailtrap."
# Créer un message MIMEMultipart et définir les en-têtes
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
# Joindre la partie texte
message.attach(MIMEText(body, "plain"))
# Envoyer l'email
with smtplib.SMTP(smtp_server, port) as server:
server.starttls() # Sécuriser la connexion
server.login(login, password) # Se connecter au serveur SMTP
server.sendmail(sender_email, receiver_email, message.as_string()) # Envoyer l'email
print('Email envoyé avec succès.')
Explication rapide :
- Utilisation de
MIMEMultipart
: Même si l’email est en texte brut et envoyé à un seul destinataire, j’ai gardé l’utilisation deMIMEMultipart
. Cette approche offre de la flexibilité si vous décidez d’ajouter des pièces jointes ou du contenu HTML à l’avenir. Cependant, vous pourriez simplifier davantage en utilisant uniquementMIMEText
. - Envoi de l’email : L’appel à
server.sendmail
est simple, spécifiant l’expéditeur, le destinataire, et convertissant l’objet du message en une chaîne de caractères à envoyer.
Astuce Pro : Si vous utilisez des variables d’environnement ou un fichier de configuration externe pour les informations d’identification SMTP, il est préférable d’avoir des fichiers séparés pour la configuration Transactionnelle et Bulk.
Envoyer des emails en utilisant l’API
Pour simplifier votre intégration, Mailtrap dispose d’un SDK Python officiel (consultez le lien GitHub ◀️). Je l’utiliserai pour vous montrer comment envoyer un email en texte brut, l’envoyer à plusieurs destinataires, envoyer des emails en masse, etc.
Ici, je ne couvrirai pas la méthode d’envoi d’emails asynchrone car Mailtrap ne la prend pas en charge, et cela n’a pas beaucoup de sens dans les contextes API.
Pour rappel, vous devrez connecter et vérifier votre domaine avec Mailtrap. Consultez notre guide détaillé et une vidéo bonus pour vous montrer comment faire.
Une fois cela fait, retournez à votre application Python et installez le SDK Python officiel de Mailtrap avec la commande suivante :
pip install mailtrap
Note : assurez-vous que la version du package est 3.6 ou plus.
Ensuite, vous devez créer l’objet d’email et remplir les variables (comme l’email et le nom) avec vos informations d’identification Mailtrap. Gardez en tête que vous devez indiquer l’adresse du domaine d’envoi vérifié.
import mailtrap as mt
# Créer un objet Mail
mail = mt.Mail(
sender=mt.Address(email="mailtrap@exemple.com", name="Test de Mailtrap"),
to=[mt.Address(email="votre@email.com")],
subject="Vous êtes génial !",
text="Félicitations pour l’envoi d'un email de test avec Mailtrap !",
)
# Créer un client et envoyer
client = mt.MailtrapClient(token="votre-clé-api")
client.send(mail)
Vous devrez également créer le client avec votre jeton API. Allez dans votre compte Mailtrap en ouvrant le menu déroulant ‘Settings’, puis choisissez l’onglet “API Token”. Copiez les informations d’identification en appuyant sur ‘Copy’ à côté de votre jeton.
Ensuite, vous pouvez utiliser la commande ci-dessous pour envoyer l’email.
# Créer un client et envoyer
client = mt.MailtrapClient(token="votre-clé-api")
client.send(mail)
Ceci étant fait, je vais vous montrer comment utiliser le SDK pour différents cas d’utilisation.
Voici un script de base pour envoyer un email en texte brut :
from mailtrap import Mail, Address, MailtrapClient
# Créer un objet Mail avec les détails de base pour un email en texte brut
mail = Mail(
# Spécifiez l'adresse email de l'expéditeur et un nom optionnel
sender=Address(email="mailtrap@exemple.com", name="Test de Mailtrap"),
# Spécifiez un ou plusieurs destinataires ; ici, nous utilisons une liste avec un seul destinataire
to=[Address(email="votre@email.com", name="Votre Nom")],
# Objet de l'email
subject="Email en texte brut simple",
# Le contenu en texte brut de l'email
text="Ceci est un email en texte brut envoyé en utilisant le SDK Mailtrap. Simple et direct.",
# Optionnel : catégoriser cet email pour faciliter le tri ou la gestion dans le service Mailtrap
category="Test",
# Optionnel : des en-têtes supplémentaires peuvent être spécifiés, mais ne sont pas nécessaires pour les emails en texte brut
headers={"X-Example-Header": "HeaderValue"}
)
# Initialiser le MailtrapClient avec votre clé API
client = MailtrapClient(token="votre-clé-api")
# Envoyer l'email en utilisant la méthode send du client
client.send(mail)
print("Email en texte brut envoyé avec succès.")
Explication rapide :
- Importation des classes : Seules les classes
Mail
,Address
, etMailtrapClient
de la bibliothèque Mailtrap sont importées, car nous nous concentrons sur l’envoi d’un simple email en texte brut. - Création de l’objet
Mail
:Mail
: Le constructeur est utilisé pour créer un objet d’email.Sender
: Utilise la classeAddress
pour définir l’adresse email et le nom de l’expéditeur.to
: Une liste d’objetsAddress
pour chaque destinataire. Pour un email en texte brut, vous avez généralement un ou plusieurs destinataires directs listés ici.subject
: La ligne d’objet de l’email.text
: Le contenu réel de l’email, au format texte brut.category
etheaders
: Champs optionnels qui permettent une catégorisation supplémentaire et des en-têtes personnalisés. Bien qu’ils ne soient pas strictement nécessaires pour envoyer un email en texte brut, ils peuvent être utiles pour des raisons organisationnelles ou techniques au sein du service Mailtrap ou pour la gestion des fournisseurs de messagerie.
- Envoi de l’email :
- Une instance de
MailtrapClient
est créée et authentifiée avec un jeton API. - La méthode
send
duMailtrapClient
est ensuite appelée, en passant l’objetmail
comme argument pour envoyer l’email. - Enfin, un message de confirmation est imprimé pour indiquer que l’email a été envoyé.
- Une instance de
Envoyer un email HTML
Je vais ajuster le script en spécifiant le paramètre html
dans l’objet Mail
avec le contenu HTML.
from mailtrap import Mail, Address, MailtrapClient
# Créer un objet Mail pour envoyer un email HTML
mail = Mail(
sender=Address(email="mailtrap@exemple.com", name="Test de Mailtrap"),
to=[Address(email="destinataire@email.com", name="Nom du Destinataire")],
subject="Votre Objet d'Email HTML Ici",
text="Ceci est un texte de secours pour les fournisseurs de messagerie qui ne supportent pas l’HTML",
html="""
<!DOCTYPE html>
<html>
<head>
<title>Titre de l'Email</title>
</head>
<body>
<h1>Hello, World !</h1>
<p>Ceci est un email <strong>HTML</strong> envoyé depuis le SDK Python de Mailtrap.</p>
<p>Voici un lien : <a href="https://example.com">Visitez Exemple.com</a></p>
</body>
</html>
""",
# Vous pouvez catégoriser cet email ou ajouter des en-têtes personnalisés si nécessaire
category="Email HTML",
headers={"X-Custom-Header": "Valeur"}
)
# Initialiser le MailtrapClient avec votre clé API
client = MailtrapClient(token="votre-clé-api")
# Envoyer l'email
client.send(mail)
print("Email HTML envoyé avec succès.")
Explication rapide :
- Contenu HTML : Le paramètre
html
de l’objetMail
est l’endroit où vous mettez votre contenu HTML. C’est la partie de l’email qui sera affichée par les fournisseurs de messagerie capables d’afficher du HTML. - Contenu texte de secours : La version en texte brut du contenu de l’email sert de secours pour les fournisseurs de messagerie qui n’affichent pas l’HTML ou pour les utilisateurs qui préfèrent les emails en texte brut.
- Envoi de l’email : Avec le contenu HTML défini, le reste du processus pour envoyer l’email reste le même.
Envoyer un email à plusieurs destinataires
Je vais modifier la partie destinataires de la configuration de l’email pour inclure plusieurs destinataires.
Il y a des commentaires tout au long du script pour expliquer comment gérer plusieurs destinataires pour le champ To
et ajouter des destinataires Cc
(Copie Carbone) et Bcc
(Copie Carbone Invisible). Je n’ajouterai donc pas la section Explication rapide dans ce cas car la méthode est simple et la logique est évidente dans le script.
from mailtrap import Mail, Address, MailtrapClient
# Créer un objet Mail visant plusieurs destinataires, y compris les adresses Cc et Bcc
mail = Mail(
# Spécifiez l'adresse email de l'expéditeur et un nom optionnel
sender=Address(email="mailtrap@exemple.com", name="Test de Mailtrap"),
# Spécifiez plusieurs destinataires dans le champ "A"
to=[
Address(email="destinataire1@email.com", name="Destinataire Un"),
Address(email="destinataire2@email.com", name="Destinataire Deux"),
],
# De plus, spécifiez des destinataires dans le champ "Cc"
cc=[
Address(email="cc1@email.com", name="Cc Destinataire Un"),
Address(email="cc2@email.com", name="Cc Destinataire Deux"),
],
# Et des destinataires dans le champ "Bcc" pour des copies cachées
bcc=[
Address(email="bcc1@email.com", name="Bcc Destinataire Un"),
Address(email="bcc2@email.com", name="Bcc Destinataire Deux"),
],
# Objet de l'email
subject="Email à Plusieurs Destinataires",
# Le contenu de l’email en texte brut
text="Cet email est envoyé à plusieurs destinataires, y compris les adresses Cc et Bcc.",
# Optionnel : catégoriser cet email ou ajouter des en-têtes personnalisés si nécessaire
category="Email en masse",
headers={"X-Custom-Header": "Valeur"}
)
# Initialiser le MailtrapClient avec votre clé API
client = MailtrapClient(token="votre-clé-api")
# Envoyer l'email en utilisant la méthode send du client
client.send(mail)
print("Email envoyé à plusieurs destinataires avec succès.")
Envoyer un email avec des pièces jointes
Ici, je vais principalement me concentrer sur la manière dont la classe Attachment
est utilisée pour inclure des fichiers dans votre email. Cet exemple démontrera comment joindre un fichier générique, mais l’approche est similaire pour tout type de fichier.
from mailtrap import Mail, Address, MailtrapClient, Attachment, Disposition
import base64
from pathlib import Path
# Préparer le fichier que vous souhaitez joindre
file_path = Path("path/to/votre/fichier.pdf") # Remplacez ceci avec le chemin de votre fichier
file_content = file_path.read_bytes() # Lire le contenu du fichier en tant que bytes
# Encoder le contenu du fichier en base64
encoded_content = base64.b64encode(file_content)
# Créer un objet Mail avec une pièce jointe
mail = Mail(
sender=Address(email="mailtrap@exemple.com", name="Test de Mailtrap"),
to=[Address(email="destinataire@email.com", name="Nom du Destinataire")],
subject="Email avec pièce jointe",
text="Cet email contient une pièce jointe. Ouvrez-la !",
# Définir la pièce jointe
attachments=[
Attachment(
content=encoded_content, # Le contenu encodé en base64 du fichier
filename=file_path.name, # Le nom du fichier tel qu'il doit apparaître dans l'email
disposition=Disposition.ATTACHMENT, # Indique que le fichier est une pièce jointe
mimetype="application/pdf", # Le type MIME du fichier
# `content_id` est optionnel et généralement utilisé pour intégrer des images directement dans le corps HTML
)
],
)
# Initialiser le MailtrapClient avec votre clé API
client = MailtrapClient(token="votre-clé-api")
# Envoyer l'email
client.send(mail)
print("Email avec pièce jointe envoyé avec succès.")
Explication rapide :
- Préparation du fichier : Le script commence par spécifier le chemin du fichier que vous souhaitez joindre et en lire le contenu en tant que bytes. Il est important de lire le fichier en mode binaire (
read_bytes()
) pour s’assurer que le contenu est correctement encodé et transmis. - Encodage en base64 : Comme les protocoles de messagerie ne sont pas sûrs pour les binaires, le contenu du fichier doit être encodé en base64. Cet encodage convertit les données binaires en un format texte qui peut être transmis en toute sécurité par email. La méthode
base64.b64encode
est utilisée à cette fin. - Création de la pièce jointe : La classe ‘Attachment’ est instanciée avec plusieurs paramètres :
content
: Le contenu encodé en base64 du fichier.filename
: Le nom du fichier tel que vous souhaitez qu’il apparaisse dans l’email.disposition
: Ceci est défini sur ‘Disposition.ATTACHMENT’ pour indiquer que le fichier est une pièce jointe (par opposition à inline, qui serait utilisé pour des images intégrées).mimetype
: Le type MIME du fichier, ce qui aide les fournisseurs de messagerie à comprendre comment gérer le fichier. Pour un PDF, il s’agit d’ ‘application/pdf’.
Envoyer un email avec une image intégrée
Ici, je vais joindre l’image pour qu’elle puisse être affichée directement dans le contenu HTML de l’email. Cela est généralement réalisé en joignant l’image avec un Content-ID (cid
) qui peut être référencé dans le HTML. Voici comment le faire :
from mailtrap import Mail, Address, MailtrapClient, Attachment, Disposition
import base64
from pathlib import Path
# Spécifiez le chemin de votre image
image_path = Path("path/to/votre/image.jpg")
image_content = image_path.read_bytes() # Lire le contenu de l'image en tant que bytes
# Encoder le contenu de l'image en base64
encoded_image = base64.b64encode(image_content)
# Créer un objet Mail avec du contenu HTML et une image intégrée
mail = Mail(
sender=Address(email="mailtrap@exemple.com", name="Test de Mailtrap"),
to=[Address(email="destinataire@email.com", name="Nom du Destinataire")],
subject="Email avec image intégrée",
text="Ceci est un texte de secours pour les fournisseurs de messagerie qui ne supportent pas l’HTML.",
html="""
<!DOCTYPE html>
<html>
<body>
<h1>Hello, World !</h1>
<p>Cet email contient une image intégrée.</p>
<!-- Utilisez 'cid:image_cid' dans l\'attribut src pour intégrer l\'image -->
<img src="cid:image_cid">
</body>
</html>
""",
attachments=[
Attachment(
content=encoded_image,
filename=image_path.name,
disposition=Disposition.INLINE, # Marquez la pièce jointe comme intégrée
mimetype="image/jpeg", # Le type MIME de l'image
content_id="image_cid", # Content-ID utilisé pour référencer l'image dans l'attribut src HTML
)
],
)
# Initialiser le MailtrapClient avec votre clé API
client = MailtrapClient(token="votre-clé-api")
# Envoyer l'email
client.send(mail)
print("Email avec une image intégrée envoyé avec succès.")
Explication rapide :
- Préparer l’image : Avant de joindre l’image, vous devez lire son contenu en bytes, puis l’encoder en base64. Cet encodage est nécessaire car le contenu des emails (y compris les pièces jointes) doit être transmis dans un format texte.
- Contenu HTML : Dans le paramètre
html
de l’objetMail
, vous devez inclure une balise<img>
où l’attributsrc
utilise un schémacid:
suivi du Content-ID de l’image ajoutée en pièce jointe (image_cid
dans ce cas). Cecid
relie l’image intégrée dans le contenu HTML à l’image ajoutée en pièce jointe. - Joindre l’image : L’image est jointe en utilisant la classe
Attachment
avec plusieurs paramètres spécifiques :content
: Le contenu encodé en base64 de l’image.filename
: Le nom du fichier. Il est utilisé comme secours chez certains fournisseurs de messagerie si l’image ne peut pas être affichée.disposition
: Défini surDisposition.INLINE
pour indiquer que la pièce jointe doit être affichée en ligne avec le contenu HTML, et non comme une pièce jointe séparée et téléchargeable.mimetype
: Spécifie le type MIME de l’image (par exemple, “image/jpeg”). Cela aide le fournisseur de messagerie à comprendre comment gérer le fichier.content_id
: Un identifiant unique pour la pièce jointe référencée dans l’attributsrc
du HTML pour intégrer l’image.
Envoi d’emails en masse
Petit rappel, la Plateforme d’Email Delivery de Mailtrap vous permet d’envoyer des emails en masse en plus des emails transactionnels, sous le même plan. Vous devez sélectionner le stream, cliquer sur le bouton API, et choisir l’intégration Python.
Ceci étant fait, voici ce que vous devez faire d’autre.
- Assurez-vous d’avoir installé la bibliothèque
requests
. Si ce n’est pas le cas, vous pouvez l’installer en utilisant pip :
pip install requests
- Construisez un payload JSON qui spécifie les détails de l’email et ajustez le champ
to
pour inclure plusieurs destinataires.
- En utilisant la bibliothèque requests, faites une requête POST à l’endpoint de l’API Bulk de Mailtrap, en fournissant les en-têtes nécessaires (y compris l’autorisation) et le payload. Consultez le script exemplaire ci-dessous.
import requests
import json
def send_mailtrap_email(payload):
url = "https://bulk.api.mailtrap.io/api/send"
headers = {
"Authorization": "Bearer votre_clé_api", # Remplacez par votre clé API Mailtrap
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
return response.text
payload = {
"from": {"email": "mailtrap@mailtrapdemo.com", "nom": "Test de Mailtrap"},
"to": [{"email": "destinataire@exemple.com"}], # Ajoutez d'autres destinataires si nécessaire
"subject": "Vous êtes génial !",
"text": "Félicitations pour l'envoi d'un email de test avec Mailtrap !",
"category": "Test d'intégration"
}
response_text = send_mailtrap_email(payload)
print(response_text)
Explication rapide :
payload
: C’est un dictionnaire qui correspond à la structure JSON attendue par l’API Bulk de Mailtrap. Vous pouvez modifier ce dictionnaire pour inclure les détails de votre email, tels que l’expéditeur, les destinataires, l’objet et le corps.send_mailtrap_email
: La fonction encapsule le processus d’envoi de l’email. Elle prend le payload en entrée, le convertit en format JSON et fait une requête POST à l’API Bulk de Mailtrap.
Considérations de sécurité lors de l’envoi d’emails
Si vous envisagez d’automatiser l’envoi d’emails et de les envoyer à un grand nombre de destinataires de manière régulière, il est préférable de prendre des précautions supplémentaires. (Surtout en ce qui concerne la méthode SMTP.)
Ici, je vais couvrir quelques méthodes éprouvées pour éviter de coder trop d’informations d’identification dans vos scripts et gérer les erreurs. Notez que les conseils ci-dessous s’appliquent quel que soit le fournisseur de services de messagerie que vous utilisez (SendGrid, SES, compte Gmail, etc.)
Utilisation des variables d’environnement pour les informations sensibles
Les variables d’environnement sont un moyen sûr de gérer les paramètres de configuration et les informations sensibles en dehors de votre code source.
En Python, vous pouvez utiliser le module os
pour accéder aux variables d’environnement.
import os
smtp_server = os.getenv("SMTP_SERVER", "default.smtp.server")
login = os.getenv("SMTP_LOGIN")
password = os.getenv("SMTP_PASSWORD")
# Exemple d'utilisation dans une configuration de connexion SMTP
# smtp.login(login, password)
Avant d’exécuter votre script, définissez les variables d’environnement dans votre système d’exploitation. Par exemple, dans un terminal Linux ou macOS, vous pouvez les définir temporairement comme ceci :
export SMTP_SERVER=live.smtp.mailtrap.io
export SMTP_LOGIN=votre_identifiant
export SMTP_PASSWORD=votre_mot_de_passe
Sous Windows, vous pouvez les définir via la ligne de commande comme suit :
set SMTP_SERVER=live.smtp.mailtrap.io
set SMTP_LOGIN=votre_identifiant
set SMTP_PASSWORD=votre_mot_de_passe
Gestion des erreurs
Voici comment gérer les erreurs inattendues, telles que les erreurs réseau, les problèmes d’authentification ou d’autres exceptions pouvant survenir lors de l’envoi de l’email.
try:
# Tentative d’envoi d’un email
server.sendmail(sender_email, recipient_email, message.as_string())
except smtplib.SMTPException as e:
print(f"Une erreur SMTP s'est produite : {e}")
except Exception as e:
print(f"Une erreur s'est produite : {e}")
Utilisation de SSL
Voici un aperçu de base de la façon dont vous pourriez utiliser smtplib.SMTP_SSL
dans un script pour envoyer un email :
import smtplib
from email.mime.text import MIMEText
# Configuration
port = 465
smtp_server = "live.smtp.mailtrap.io"
login = "identifiant"
password = "mot de passe"
sender_email = "expediteur@domaine_enregistre.com"
receiver_email = "destinataire@gmail.com"
text = """\
Bonjour,
N'hésitez pas à nous dire quel contenu vous serait utile !
"""
message = MIMEText(text, "plain")
message["Subject"] = "Email en texte brut"
message["From"] = sender_email
message["To"] = receiver_email
with smtplib.SMTP_SSL(smtp_server, port) as server:
server.login(login, password)
server.sendmail(sender_email, receiver_email, message.as_string())
print("Email envoyé avec succès !")
Configuration externe
Stocker les données de configuration (comme les détails du serveur SMTP et les adresses email) dans des fichiers externes ou des variables d’environnement améliore la sécurité et la flexibilité de votre script. Pour des configurations plus complexes, vous pourriez envisager d’utiliser un fichier JSON ou similaire.
- Exemple de configuration JSON (
config.json
) :
{
"smtp_server": "live.smtp.mailtrap.io",
"smtp_port": 587,
"login": "votre_identifiant",
"password": "votre_mot_de_passe"
}
- Comment charger la configuration :
import json
with open('config.json', 'r') as config_file:
config = json.load(config_file)
smtp_server = config.get('smtp_server')
smtp_port = config.get('smtp_port')
login = config.get('login')
password = config.get('password')
Conseil : Si vous souhaitez envoyer des emails depuis votre compte Google et utiliser le serveur SMTP de Gmail (smtp.gmail.com), nous avons déjà écrit un article à ce sujet. Consultez l’article ici.
Tester les emails et l’envoi d’emails dans un environnement de test
Lors de la création d’une nouvelle application ou de l’ajout de fonctionnalités, en particulier lorsqu’il s’agit de la première fois, il est essentiel d’expérimenter sur un serveur de test. Voici une liste rapide des raisons :
- Vous n’enverrez pas d’emails à vos amis et clients, ce qui est crucial lorsque vous testez l’envoi d’emails en masse ou travaillez avec une base de données d’emails.
- Vous ne spammerez pas votre boîte de récéption d’emails de test.
- Votre domaine ne sera pas mis sur liste noire pour spam.
Un serveur SMTP de test imite le travail d’un serveur web tiers réel. Dans les exemples suivants, j’utiliserai l’Email Testing de Mailtrap, qui permet aux développeurs de capturer le trafic SMTP depuis le staging et d’inspecter et de déboguer les emails avant qu’ils ne soient réellement envoyés aux destinataires.
En plus de cela, l’Email Testing peut aider à valider votre HTML/CSS, analyser le contenu de l’email, prévisualiser le `txt` et le contenu, et donner un score de spam pertinent. L’outil est facile à configurer ; tout ce que vous avez à faire est de copier les informations d’identification générées par l’application et de les coller dans votre code.
Note : Je couvrirai les méthodes SMTP et API séparément. Et si vous voulez un tutoriel approfondi sur les tests avec Python, consultez cet article.
SMTP
Allez sur Mailtrap, sélectionnez Email Testing, puis My Inbox. Sous l’onglet SMTP Settings, cliquez sur “Afficher les informations d’identification” pour révéler les informations d’identification de test.
Voici à quoi cela ressemble en pratique :
import smtplib
port = 2525
smtp_server = "sandbox.smtp.mailtrap.io"
login = "1b2c3d4e5d66f" # votre identifiant généré par Mailtrap
password = "1b2c3d4e5d66f" # votre mot de passe généré par Mailtrap
Mailtrap simplifie encore les choses. Allez dans la section Integrations dans l’onglet SMTP Settings et obtenez le modèle prêt à l’emploi du message texte simple grâce à vos informations d’identification Mailtrap.
Note importante : Les extraits utilisent des informations d’identification fictives pour des raisons de sécurité, assurez-vous de copier-coller vos vraies informations d’identification dans le code.
L’option la plus basique pour instruire votre code Python sur qui envoie quoi à qui est la méthode d’instance sendmail()
, que j’utiliserai ici. Mais nous avons également des intégrations exemplaires pour Django et Flask.
Regardons de plus près l’exemple et ajoutons une gestion des erreurs (voir les #explications entre les lignes). Pour capturer les erreurs, nous utilisons les blocs try
et except
. Référez-vous à la documentation pour la liste des exceptions ici.
# la première étape est toujours la même : importer tous les composants nécessaires :
import smtplib
from socket import gaierror
# maintenant, vous pouvez jouer avec votre code. Définissons le serveur SMTP séparément ici :
port = 2525
smtp_server = "sandbox.smtp.mailtrap.io"
login = "1b2c3d4e5d66f" # collez votre identifiant généré par Mailtrap
password = "1b2c3d4e5d66f" # collez votre mot de passe généré par Mailtrap
# spécifiez les adresses email de l'expéditeur et du destinataire
sender = "de@exemple.com"
receiver = "mailtrap@exemple.com"
# tapez votre message : utilisez deux nouvelles lignes (\n) pour séparer l’objet du corps du message, et utilisez 'f' pour insérer automatiquement des variables dans le texte
message = f"""\
Subject: Bonjour Mailtrap
To: {receiver}
From: {sender}
Ceci est mon premier message avec Python."""
try:
# envoyez votre message avec les informations d'identification spécifiées ci-dessus
with smtplib.SMTP(smtp_server, port) as server:
server.login(login, password)
server.sendmail(sender, receiver, message)
# indiquez au script de vous informer si votre message a été envoyé ou les erreurs qui doivent être corrigées
print('Envoyé')
except (gaierror, ConnectionRefusedError):
print('Échec de la connexion au serveur. Mauvais paramètres de connexion ?')
except smtplib.SMTPServerDisconnected:
print('Échec de la connexion au serveur. Mauvais identifiant/mot de passe ?')
except smtplib.SMTPException as e:
print('Une erreur SMTP s\'est produite : ' + str(e))
Une fois que vous obtenez le résultat “Envoyé” dans Shell, vous devriez voir votre message dans votre boîte de réception Mailtrap :
Si vous préférez travailler dans l’environnement local, le serveur de débogage SMTP local peut être une option. À cette fin, Python propose un module smtpd. Il dispose d’une fonctionnalité DebuggingServer
, qui rejettera les messages que vous envoyez et les imprimera dans stdout
. Il est compatible avec tous les systèmes d’exploitation.
Définissez votre serveur SMTP sur localhost:1025
python -m smtpd -n -c DebuggingServer localhost:1025
Pour exécuter un serveur de messagerie SMTP sur le port 25, vous aurez besoin des permissions root :
sudo python -m smtpd -n -c DebuggingServer localhost:25
Cela vous aidera à vérifier si votre code fonctionne et à identifier les problèmes potentiels. Cependant, cela ne vous permettra pas de vérifier à quoi ressemble votre modèle d’email HTML.
API
Vous pouvez consulter notre documentation API pour tous les détails sur les tests API. J’utiliserai Python 3 pour vous montrer la méthode, et vous guider étape par étape.
- Établissez une connexion avec l’endpoint API d’Email Testing de Mailtrap en utilisant
http.client.HTTPSConnection
. - Définissez le contenu de votre email, y compris les destinataires (
to
,cc
,bcc
), l’expéditeur (from
), l’objet, le contenu du texte et toute pièce jointe ou variable personnalisée sous forme de payload JSON. - Faites une requête POST à l’API de Email Testing de Mailtrap avec votre payload et les en-têtes nécessaires, y compris votre jeton API pour l’autorisation. Voici un exemple :
import http.client
import json
def test_send_email():
conn = http.client.HTTPSConnection("sandbox.api.mailtrap.io")
payload = {
"to": [{"email": "john_doe@exemple.com", "name": "John Doe"}],
"cc": [{"email": "jane_doe@exemple.com", "name": "Jane Doe"}],
"bcc": [{"email": "james_doe@exemple.com", "name": "Jim Doe"}],
"from": {"email": "ventes@exemple.com", "name": "Exemple d’Équipe de vente"},
"attachments": [
{
"content": "base64_encoded_content_here",
"filename": "index.html",
"type": "text/html",
"disposition": "attachment"
}
],
"custom_variables": {"user_id": "45982", "batch_id": "PSJ-12"},
"headers": {"X-Message-Source": "dev.mondomaine.com"},
"subject": "Votre exemple de confirmation de commande",
"text": "Félicitations pour votre commande n°1234",
"category": "Test API"
}
headers = {
'Content-Type': "application/json",
'Accept': "application/json",
'Api-Token': "votre_jeton_api_ici" # Remplacez par votre vrai jeton API
# Convertir le payload en chaîne JSON
json_payload = json.dumps(payload)
# Faire la requête POST
conn.request("POST", "/api/send/inbox_id", json_payload, headers) # Remplacez 'inbox_id' par votre véritable ID de boîte de réception
# Obtenir la réponse
response = conn.getresponse()
data = response.read()
print(data.decode("utf-8"))
if __name__ == "__main__":
test_send_email()
Notes:
- Payload : Le dictionnaire contient tous les détails de l’email que vous souhaitez tester. Assurez-vous de remplacer les valeurs remplaçables par des données réelles pertinentes pour votre cas de test. Pour les pièces jointes, encodez votre contenu de fichier en Base64 et incluez-le dans le champ
content
. - Headers : Incluez vos en-têtes
Content-Type
,Accept
, etApi-Token
. Le jeton API doit être votre jeton API Mailtrap. - Requête et réponse : Le script fait une requête POST à l’endpoint
/api/send/inbox_id
, en remplaçantinbox_id
par votre ID de boîte de réception réel. Ensuite, il lit et imprime la réponse pour vérifier le résultat.
Prochaines étapes avec les emails en Python
J’ai démontré les options d’envoi d’emails avec Python pour décrire la logique et l’éventail de ses capacités. Mais je recommande de consulter la documentation de Python et de tester votre propre code pour obtenir de bons résultats !
Il existe de nombreux frameworks et bibliothèques Python qui rendent la création d’applications plus élégante et dédiée. De plus, certains d’entre eux peuvent améliorer votre expérience en termes de construction de fonctionnalités d’envoi d’emails :
Les frameworks les plus populaires sont :
- Flask, qui offre une interface simple pour l’envoi d’emails — Flask Mail. N’hésitez pas à en apprendre davantage dans notre guide sur comment envoyer des emails avec Flask.
- Django peut être une excellente option pour créer des modèles HTML. Consultez également notre tutoriel sur l’envoi d’emails avec Django.
- Zope est utile pour le développement de sites Web.
- Marrow Mailer est un framework dédié à la livraison d’emails, offrant diverses configurations utiles.
- Plotly et son Dash peuvent aider à envoyer des graphiques et des rapports par email.
Bonne chance, et n’oubliez pas de rester prudent lorsque vous envoyez vos emails !