Envoi d'e-mails en Python avec SMTP

Ce tutoriel présentera une introduction à SMTP, un module Python utilisé pour l’envoi de courrier. Il montrera également comment envoyer différents types de courrier électronique, tels que des courriers électroniques simples, des courriers électroniques avec pièces jointes et des courriers électroniques contenant du contenu HTML.

Introduction au SMTP

Le protocole SMTP (Simple Mail Transfer Protocol) gère l'envoi et le routage du courrier électronique entre les serveurs de messagerie.

En Python, le smtplib Le module définit un objet de session client SMTP pouvant être utilisé pour envoyer des messages à n’importe quel ordinateur doté d’un démon écouteur SMTP ou ESMTP..

Voici comment créer un objet SMTP.

import smtplib server = smtplib.SMTP (host = 'adresse_hôte', port = votre_port)

Créer et envoyer un email simple

Le script suivant vous permettra d’envoyer un courrier électronique via le serveur SMTP de Gmail. Cependant, Google ne permettra pas de se connecter via smtplib car il a marqué ce type de connexion comme "moins sécurisé". Pour résoudre ce problème, accédez à la page https://www.google.com/settings/security/lesssecureapps lorsque vous êtes connecté à votre compte Google et à "Autoriser les applications moins sécurisées". Voir la capture d'écran ci-dessous.

Nous allons suivre les étapes suivantes pour accomplir ce processus:

  • Créer un objet SMTP pour la connexion au serveur.
  • Connectez-vous à votre compte.
  • Définissez vos en-têtes de message et vos identifiants de connexion.
  • Créer un MIMEMultipart un objet de message et y attacher les en-têtes correspondants, c’est-à-dire De, À et Sujet.
  • Joindre le message au message MIMEMultipart objet.
  • Enfin, envoyez le message.

Ce processus est aussi simple que montré ci-dessous.

# importer les packages nécessaires de email.mime.multipart importer MIMEMultipart de email.mime.text importer MIMEText importer smtplib # créer une instance d'objet de message msg = MIMEMultipart () message = "Merci" # configurez les paramètres du message mot de passe = "votre_mot_passe" msg ['From'] = "your_address" msg ['To'] = "to_address" msg ['Subject'] = "Subscription" # ajouter dans le corps du message msg.attach (MIMEText (message, 'plain')) # create server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Identifiants de connexion pour l'envoi de la messagerie server.login (msg ['De'], mot de passe) # envoie le message via le serveur . server.sendmail (msg ['De'], msg ['À'], msg.as_string ()) server.quit () print "a envoyé un e-mail à% s:"% (msg ['À']]) 

Notez que les adresses «À» et «De» doivent être incluses explicitement dans les en-têtes de message..

Créer et envoyer un email avec une pièce jointe

Dans cet exemple, nous allons envoyer un email avec une image en pièce jointe. Le processus est similaire à l'envoi d'un e-mail en texte brut.

  • Créer un objet SMTP pour la connexion au serveur.
  • Connectez-vous à votre compte.
  • Définissez vos en-têtes de message et vos identifiants de connexion.
  • Créer un MIMEMultipart un objet de message et y attacher les en-têtes correspondants, c’est-à-dire De, À et Sujet.
  • Lire et joindre l'image au message MIMEMultipart objet.
  • Enfin, envoyez le message.
# send_attachment.py # importez les packages nécessaires depuis email.mime.multipart importez MIMEMultipart depuis email.MIMEImage import MIMEImage depuis email.mime.text importez MIMEText import smtplib # créez une instance d'objet de message msg = MIMEMultipart () # configurez les paramètres du mot de passe du message = "your_password" msg ['De'] = "votre_adresse" msg ['Vers'] = "to_address" msg ['Subject'] = "Photos" # joint une image au corps du message msg.attach (MIMEImage (file ("google .jpg "). read ())) # créer serveur serveur = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Identifiants de connexion pour l'envoi du mail server.login (msg ['De' ], mot de passe) # envoyer le message via le serveur. server.sendmail (msg ['De'], msg ['À'], msg.as_string ()) server.quit () print "a envoyé un e-mail à% s:"% (msg ['À']]) 

le MIMEImage classe est une sous-classe de MIMENonMultipart qui est utilisé pour créer des objets de message MIME de types d'image.Les autres cours disponibles incluent
MIMEMessage et MIMEAudio.

Créer et envoyer des emails HTML

La première chose à faire est de créer un modèle de courrier électronique HTML..

Créer un modèle HTML

Voici le code HTML du modèle, qui contient deux colonnes de tableau, chacune avec une image et un contenu d’aperçu. Si vous préférez une solution prête à l'emploi et professionnelle, récupérez nos meilleurs modèles de courrier électronique. Nous avons un certain nombre d'options réactives avec des fonctionnalités faciles à personnaliser pour commencer avec.

  Bulletin électronique Tutsplus    

Voir dans le navigateur

Evanto limitée

Novembre 2017

Comment se lever et courir avec Vue

Dans le post d’introduction de cette série, nous avons expliqué comment les concepteurs Web peuvent tirer parti de l’utilisation de Vue. Dans ce tutoriel, nous allons apprendre à utiliser Vue up…

Présentation de Haiku: concevoir et créer un mouvement

Les développeurs Web ayant de plus en plus de mouvement, il en va de même pour les outils qui aident à rationaliser sa création. Haiku est un autonome…

Concevoir de meilleures expériences pour le Web et le mobile

Se désabonner | Tweet | Voir dans le navigateur

Le modèle ressemblera finalement à ceci une fois terminé:

Vous trouverez ci-dessous le script pour envoyer un courrier électronique avec un contenu HTML. Le contenu du modèle sera notre message électronique.

importer smtplib importer email.message server = smtplib.SMTP ('smtp.gmail.com:587') email_content = "" "    Bulletin électronique Tutsplus    

Voir dans le navigateur

Evanto limitée

Novembre 2017

Comment se lever et courir avec Vue

Dans le post d’introduction de cette série, nous avons expliqué comment les concepteurs Web peuvent tirer parti de l’utilisation de Vue. Dans ce tutoriel, nous allons apprendre à utiliser Vue up…

Présentation de Haiku: concevoir et créer un mouvement

Les développeurs Web ayant de plus en plus de mouvement, il en va de même pour les outils qui aident à rationaliser sa création. Haiku est un autonome…

Concevoir de meilleures expériences pour le Web et le mobile

Se désabonner | Tweet | Voir dans le navigateur

"" "msg = email.message.Message () msg ​​['Subject'] = 'Newsletter Tutsplus' msg ['De'] = 'votre adresse' msg ['À'] = 'to_address' password =" votre mot de passe "msg. add_header ('Content-Type', 'text / html') msg.set_payload (email_content) s = smtplib.SMTP ('smtp.gmail.com: 587') s.starttls () # Login Identifiants de connexion pour l'envoi du courrier s. login (msg ['De'], mot de passe) s.sendmail (msg ['De'], [msg ['À']], msg.as_string ())

Exécutez votre code et si aucune erreur ne survient, le courrier électronique a réussi. Allez maintenant dans votre boîte de réception et vous devriez voir votre courriel sous forme de contenu HTML bien formaté.

Conclusion

Ce tutoriel a couvert la plupart des éléments nécessaires à l'envoi de courriers électroniques pour votre application. Plusieurs API sont disponibles pour l'envoi de courriers électroniques. Vous n'avez donc pas besoin de recommencer à zéro, par exemple. SendGrid, mais il est également important de comprendre les bases. Pour plus d'informations, consultez la documentation Python..

De plus, n'hésitez pas à voir ce que nous avons à vendre et à étudier sur le marché Envato, posez vos questions et commentez vos remarques en utilisant le fil ci-dessous..