Comment envoyer des emails dans un programme
Envoyer des emails est un pratique courante mais il est possible de le faire dans un programe
Cela permet :
- de prevenir l'utiliser d'un problème survenue
- de lui envoyer un code dévérouillage , lien réinitiation de mot de pass ou e
- d'expedier à une liste email
Pour se faire nous utitisons le potocol SMTP
Le SMTP
Simple mail transfer protocol est le protocol internet pour envoir des email
Pour configurer un connection stmps il faut :
- le nom du serveur SMTP
- le port d'envoie
Comme d'autre Protocols le SMPT a une version sécurité appelé STMPS.
Le message est crypté quand il est envoyé et décrypé quand il est réçu
Et il embarque 2 protoctol :
- Le SSL
- TLS
Nous pouvons uniquement avec l'un de 2 procols
Les port d'envoie strandars sont :
- 25 pour le SMTP
- 465 pour le SMPT avec SSL
- 587 pour le SMT avec TLS
Je ne rentre pas plus dans détail cela mériterait un article entier
Il nous faut un plateforme d’envoi d’emails
La plupart sont payant à partir d'un certain nombre mail expédié mais il est exite des gratuit comme
Et tous utilise uniquement le SMTPS
J'utilise le sevice de google. et j'utiliserai dans cette article
Nodemailer
Nodemailer est la principel bibliothèque de nodejs implémentant le SMPT
Comment je l'implemente ?
Pour commen je l'installe :
npm install nodemailerJe doit l'importer dans un met script
import nodemailer from "nodemailer";Ensuite j'initialise la classe transport. Son constructeur peux prendre en paramètre un object javascript contenant les infomation de connection pour ouvrir un serveur SMTP
const transporter = nodemailer.createTransport({
host : "mail.example.com"
port : 587
auth : {
user process.env.user_name
passport : process.env.user_name
}
} ) ;Maitemant je crée et j'envoie l'email :
transporter.sendeMail ({
from: "sender@exemple.com"
to : "recipient@example.com"
subject : "dire bonjour"
text: "bonjour tout le monde"
})Des fois j'envois du html à place du text dans l'email de cette façon.
Aussi je peux rajouter des fichier à envoyer avec l'attribue attachement .
transporter.sendeMail ({
from: "contactt@exemple.com"
to : "hello@gmail.com"
subject : "dire bonjour"
text: "bonjour tout le monde"
attachement =[{
filename: "hello.txt",
content: "bonjout a tous !"
} ,{
filename : "fichier"
path: "path/fichier"
}
]
})Smtplib
Pour envoyer des email en python nous avons stmtplib appartenant à la bibliothèque standard de python.
from smptlib import *
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMETextDabord je déclare l'email avec MIMEMultipart.
from_address = "sender@example.com"
to_address = "recipient@example.com"
email = MIMEMultipart()
email["from"] = from_address
email["to"] = to_address
email["subject"] = "subjour "
email.attach(MIMEText("bonjour etienne", "plain"))Aussi je peux rajouter du html .
email.attach(MIMEText("bonjour etienne", "html"))Ensuite j'initialise la class STMP ave le service gmail pour faire envoie avec tls
transport = smtplib.SMTP("smtp.gmail.com",587 )
transport.starttls( )
transport.login(os.getenv("user_name"),os.getenv("password") )
Pour terminer j'envoie le mail avec :
- l'adresse d'envoyeur ,
- les addresses des destinataires ,
- le messages
transport.sendmail(from_addr , to_addr, email.as_string(), )
Je vous ai montré sur node et python je n'ai pas abordé les autre environment . Car l'article serai trop grand . et que je serai répétitif.