Python - Envoyer des Emails
Bonjour à tous, aspirants programmeurs Python !aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de l'envoi d'emails à l'aide de Python. En tant que votre enseignant en informatique de quartier, je suis ravi de vous guider à travers ce processus. Croquez-moi, à la fin de ce tutoriel, vous enverrez des emails comme un pro !
Envoyer des Emails en Python
Commençons par les bases. Envoyer des emails en Python, c'est comme être un facteur numérique, mais au lieu de marcher de porte en porte, nous utilisons une bibliothèque spéciale de Python appelée smtplib
. SMTP signifie Simple Mail Transfer Protocol, ce qui est simplement un moyen élégant de dire "les règles pour envoyer du courrier par internet".
Voici un exemple simple pour commencer :
import smtplib
expediteur_email = "[email protected]"
destinataire_email = "[email protected]"
mot_de_passe = "votre_mot_de_passe"
message = "Bonjour, ceci est un email de test provenant de Python !"
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(expediteur_email, mot_de_passe)
server.sendmail(expediteur_email, destinataire_email, message)
Analysons cela :
- Nous importons la bibliothèque
smtplib
. - Nous configurons notre email expediteur, email destinataire et mot de passe.
- Nous créons un message simple.
- Nous nous connectons au serveur SMTP de Gmail (plus de détails à ce sujet plus tard).
- Nous démarrons TLS pour la sécurité.
- Nous nous connectons à notre compte de messagerie.
- Enfin, nous envoyons l'email !
Fonction Python smtplib.SMTP()
La fonction SMTP()
est comme la clé de notre bureau de poste numérique. Elle établit une connexion au serveur SMTP que nous voulons utiliser. Voici un aperçu plus détaillé :
import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)
print(server.ehlo())
server.starttls()
print(server.ehlo())
Dans cet exemple :
- Nous créons un objet SMTP pour le serveur de Gmail.
-
ehlo()
est comme dire "bonjour" au serveur. -
starttls()
démarre le cryptage TLS pour la sécurité.
Module Python smtpd
Tandis que smtplib
est utilisé pour envoyer des emails, smtpd
est utilisé pour les recevoir. C'est comme installer votre propre mini serveur de messagerie ! Voici un exemple simple :
import asyncore
from smtpd import SMTPServer
class EmailServer(SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
print(f'Reception du message de : {peer}')
print(f'Message adressé de : {mailfrom}')
print(f'Message adressé à : {rcpttos}')
print(f'Longueur du message : {len(data)}')
server = EmailServer(('localhost', 1025), None)
asyncore.loop()
Ce code configure un serveur de messagerie de base qui imprime des informations sur les emails reçus. C'est comme avoir votre propre salle de tri de courrier personnel !
Envoyer un Email HTML à l'aide de Python
Maintenant, rendons nos emails plus sophistiqués avec un peu de HTML :
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
expediteur_email = "[email protected]"
destinataire_email = "[email protected]"
mot_de_passe = "votre_mot_de_passe"
message = MIMEMultipart("alternative")
message["Subject"] = "test multipart"
message["From"] = expediteur_email
message["To"] = destinataire_email
text = "Bonjour ! C'est un email en texte brut."
html = """\
<html>
<body>
<p>Bonjour !<br>
C'est un email en <b>HTML</b>.
</p>
</body>
</html>
"""
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
message.attach(part1)
message.attach(part2)
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(expediteur_email, mot_de_passe)
server.sendmail(expediteur_email, destinataire_email, message.as_string())
Cet exemple envoie un email avec à la fois des versions en texte brut et HTML. C'est comme envoyer une lettre avec une enveloppe sophistiquée !
Envoyer des Pièces Jointes par Email
Et si nous voulions envoyer un fichier avec notre email ? Pas de problème ! Voici comment :
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
expediteur_email = "[email protected]"
destinataire_email = "[email protected]"
mot_de_passe = "votre_mot_de_passe"
message = MIMEMultipart()
message["From"] = expediteur_email
message["To"] = destinataire_email
message["Subject"] = "Email avec pièce jointe"
corps = "C'est un email avec une pièce jointe."
message.attach(MIMEText(corps, "plain"))
nom_fichier = "document.pdf" # Remplacez par votre nom de fichier
piece_jointe = open(nom_fichier, "rb")
part = MIMEBase("application", "octet-stream")
part.set_payload(piece_jointe.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename= {nom_fichier}",
)
message.attach(part)
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(expediteur_email, mot_de_passe)
server.sendmail(expediteur_email, destinataire_email, message.as_string())
Ce script attache un fichier à votre email. C'est comme ajouter un colis à votre lettre !
Envoyer des Emails Utilisant le Serveur SMTP de Gmail
Tout au long de ce tutoriel, nous avons utilisé le serveur SMTP de Gmail. Voici un tableau de référence rapide pour les serveurs SMTP courants :
Fournisseur d'Email | Serveur SMTP | Port |
---|---|---|
Gmail | smtp.gmail.com | 587 |
Outlook | smtp-mail.outlook.com | 587 |
Yahoo Mail | smtp.mail.yahoo.com | 587 |
N'oubliez pas, lorsque vous utilisez Gmail, vous devrez peut-être activer "Accès aux applications moins sécurisées" ou utiliser un "Mot de passe d'application" si vous avez l'authentification à deux facteurs activée.
Voilà, mes amis ! Vous êtes maintenant équipé pour envoyer des emails comme un pro en Python. Souvenez-vous, avec grand pouvoir vient grande responsabilité - utilisez vos nouvelles compétences en envoi d'emails avec sagesse ! Bon codage, et que vos emails atteignent toujours leur destination !
Credits: Image by storyset