Site icon La programmation sur le web

Python, envoyer un mail

Comme il peut être utile d’envoyer des mails dans des scripts, voilà une méthode simple à mettre en place pour l’envoi de mail à partir d’une adresse mail déjà existante.

Pour commencer, il faut une adresse mail dont le fournisseur fourni les informations de connexion aux serveurs SMTP.

Voici la liste des différents serveur SMTP (vu ici) :

9 TelecomNeuf.frsmtp.neuf.fr
AliceAliceadsl.frsmtp.aliceadsl.fr
AOLAol.comsmtp.aol.com
AT&TAtt.netoutbound.att.net
BluewinBluewin.chsmtpauths.bluewin.ch
BouygtelBouygtel.frsmtp.bouygtel.fr
Club InternetClub-internet.frmail.club-internet.fr
FreeFree.frsmtp.free.fr
GmailGmail.comsmtp.gmail.com
IFraIfrance.frsmtp.ifrance.fr
HotmailHotmail.comsmtp.live.com
LaPosteLaposte.frsmtp.laposte.fr
NetCourrierNetcourrier.comsmtp.netcourrier.com
O2o2.comsmtp.o2.com
OrangeOrange.frsmtp.orange.fr
Outlook.com (former Hotmail)Outlook.comsmtp.live.com
SympaticoSympatico.casmtphm.sympatico.ca
TiscaliTiscali.frsmtp.tiscali.fr
VerizonVerizon.netoutgoing.verizon.net
VoilaVoila.frsmtp.voila.fr
WanadooWanadoo.frsmtp.wanadoo.fr
YahooYahoo.commail.yahoo.com

Avec cela, tu auras besoin du port d’accès, de manière général, la connexion passera par du SSL, le port par défaut est 465 (lire cet article pour obtenir plus d’informations sur les ports).

Cependant, il peut être nécessaire d’autoriser les connexion tiers au serveur du fournisseur, par exemple pour les adresses gmail

Le code Python

Pour l’envoi de mail (avec un minimum de style) : tu pourras suivre ce schéma :

import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

smtp_address = 'adresse-serveur-smtp'

smtp_port = 465

email_address = 'identifiant-mail'
email_password = 'mot-de-passe-mail'

email_receiver = 'mail-destinataire'

# on crée un e-mail
message = MIMEMultipart("alternative")
# on ajoute un sujet
message["Subject"] = "Objet de mon mail"
# un émetteur
message["From"] = email_address
# un destinataire
message["To"] = email_receiver

# on crée un texte et sa version HTML
texte = '''
Voici le contenu de mon mail au format texte
'''

html = '''
<html>
<body>
<h1>Mon corps du mail</h1
<div>Je suis le <i>corps</i> du <b>mail</b></div>
</body>
</html>
'''

# on crée deux éléments MIMEText 
texte_mime = MIMEText(texte, 'plain')
html_mime = MIMEText(html, 'html')

# on attache ces deux éléments 
message.attach(texte_mime)
message.attach(html_mime)

context = ssl.create_default_context()

with smtplib.SMTP_SSL(smtp_address, smtp_port, context=context) as server:
  # connexion au compte
  server.login(email_address, email_password)
  # envoi du mail
  server.sendmail(email_address, email_receiver, message.as_string())

Conclusion

Voilà comment envoyer un mail en ajoutant quelques lignes dans tes scripts.

Quitter la version mobile