Python - SMTP

Le protocole SMTP (Simple Mail Transfer Protocol) est un protocole qui gère l'envoi d'un e-mail et le routage des e-mails entre les serveurs de messagerie.

Python fournit smtplib module, qui définit un objet de session client SMTP qui peut être utilisé pour envoyer des e-mails à n'importe quelle machine Internet avec un démon d'écoute SMTP ou ESMTP.

Un objet SMTP a une méthode d'instance appelée sendmail, qui est généralement utilisé pour effectuer le travail d'envoi d'un message. Il faut trois paramètres -

  • L' expéditeur - Une chaîne avec l'adresse de l'expéditeur.

  • Les destinataires - Une liste de chaînes, une pour chaque destinataire.

  • Le message - Un message sous forme de chaîne formatée comme spécifié dans les diverses RFC.

Exemple

Voici un moyen simple d'envoyer un e-mail à l'aide d'un script Python. Essayez-le une fois -

#!/usr/bin/python3
import smtplib
sender = '[email protected]'
receivers = ['[email protected]']
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
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, vous avez placé un e-mail de base dans un message, en utilisant un triple guillemet, en prenant soin de formater correctement les en-têtes. Un e-mail nécessite unFrom, To, et un Subject en-tête, séparé du corps de l'e-mail par une ligne vide.

Pour envoyer le courrier, utilisez smtpObj pour vous connecter au serveur SMTP sur la machine locale. Ensuite, utilisez la méthode sendmail avec le message, l'adresse d'expédition et l'adresse de destination comme paramètres (même si les adresses de départ et d'arrivée se trouvent dans l'e-mail lui-même, elles ne sont pas toujours utilisées pour acheminer le courrier).

Si vous n'exécutez pas de serveur SMTP sur votre ordinateur local, vous pouvez utiliser le client smtplib pour communiquer avec un serveur SMTP distant. Sauf si vous utilisez un service de messagerie Web (tel que gmail ou Yahoo! Mail), votre fournisseur de messagerie doit vous avoir fourni les détails du serveur de messagerie sortant que vous pouvez leur fournir, comme suit:

mail = smtplib.SMTP('smtp.gmail.com', 587)

Envoi d'un e-mail HTML à l'aide de Python

Lorsque vous envoyez un message texte en utilisant Python, tout le contenu est traité comme un simple texte. Même si vous incluez des balises HTML dans un message texte, celui-ci s'affiche sous forme de texte simple et les balises HTML ne seront pas formatées selon la syntaxe HTML. Cependant, Python fournit une option pour envoyer un message HTML en tant que message HTML réel.

Lors de l'envoi d'un e-mail, vous pouvez spécifier une version Mime, un type de contenu et le jeu de caractères pour envoyer un e-mail HTML.

Exemple

Voici un exemple pour envoyer le contenu HTML sous forme de courrier électronique. Essayez-le une fois -

#!/usr/bin/python3
import smtplib
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
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
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"