Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Envoyer des emails en Python avec SMTP : Guide rapide et facile

Le protocole Simple Mail Transfer Protocol (SMTP) gère l'envoi d'emails et le routage entre serveurs de messagerie.

Python fournit le module smtplib, qui définit un objet session client SMTP utilisable pour envoyer du courrier à toute machine Internet disposant d'un démon d'écoute SMTP ou ESMTP.

Voici une syntaxe simple pour créer un objet SMTP :

import smtplib
smtpObj = smtplib.SMTP([host[, port[, local_hostname]]])

Détails des paramètres :

Un objet SMTP a une méthode d'instance sendmail, généralement utilisée pour envoyer un message. Elle prend trois paramètres :

Exemple

Voici un moyen simple d'envoyer un email avec un script Python :

#!/usr/bin/python
import smtplib

sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']

message = """From: From Person 
To: To Person 
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message)
    print("Successfully sent email")
except SMTPException:
    print("Error: unable to send email")

Ici, un email basique est placé dans message avec des guillemets triples, en formatant correctement les en-têtes. Un email nécessite les en-têtes From, To et Subject, séparés du corps par une ligne vide.

Pour envoyer, utilisez smtpObj pour vous connecter au serveur SMTP local, puis la méthode sendmail avec le message, l'adresse expéditeur et destination.

Si vous n'avez pas de serveur SMTP local, utilisez le client smtplib pour communiquer avec un serveur distant. Votre fournisseur d'email doit vous avoir donné les détails du serveur sortant :

smtplib.SMTP('mail.your-domain.com', 25)

Envoi d'un email HTML avec Python

Lors de l'envoi d'un message texte, tout le contenu est traité comme du texte simple. Même avec des balises HTML, elles s'afficheront comme du texte brut. Python permet d'envoyer un message HTML comme véritable HTML.

Spécifiez une version MIME, un type de contenu et un jeu de caractères pour envoyer un email HTML.

Exemple

#!/usr/bin/python
import smtplib

message = """From: From Person 
To: To Person 
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format
This is HTML message.

This is headline.

""" try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print("Successfully sent email") except SMTPException: print("Error: unable to send email")

Envoi de pièces jointes par email

Pour envoyer un email avec contenu mixte, définissez l'en-tête Content-type à multipart/mixed. Les sections texte et pièce jointe sont spécifiées dans des frontières (boundaries).

Une frontière commence par deux tirets suivis d'un numéro unique n'apparaissant pas dans le message. Une frontière finale doit aussi se terminer par deux tirets.

Les fichiers joints doivent être encodés avec pack("m") pour un encodage base64 avant transmission.

Exemple

Envoi du fichier /tmp/test.txt en pièce jointe :

#!/usr/bin/python
import smtplib
import base64

filename = "/tmp/test.txt"
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)

sender = 'webmaster@tutorialpoint.com'
receiver = 'amrood.admin@gmail.com'
marker = "AUNIQUEMARKER"

body = """This is a test email to send an attachment."""

# En-têtes principaux
part1 = """From: From Person 
To: To Person 
Subject: Sending Attachment
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Partie message
part2 = """Content-Type: text/plain
Content-Transfer-Encoding: 8bit
%s
--%s
""" % (body, marker)

# Section pièce jointe
part3 = """Content-Type: multipart/mixed; name="%s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=%s
%s
--%s--
""" % (filename, filename, encodedcontent, marker)

message = part1 + part2 + part3

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receiver, message)
    print("Successfully sent email")
except Exception:
    print("Error: unable to send email")

Python

  1. Maîtriser les types de données Python : Guide pratique
  2. Maîtriser les opérateurs Python : Guide complet
  3. Maîtriser l'instruction pass en Python : Guide pratique
  4. Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
  5. Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
  6. Maîtriser la gestion d'exceptions Python : try, except, else et finally expliqués
  7. Capteur de température infrarouge TMP006 avec Raspberry Pi : bibliothèque Python et guide de configuration
  8. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  9. Calculer des Moyennes en Python : Guide Pratique