Comment envoyer des emails dans un programme

Partager

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 nodemailer

Je 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 MIMEText

Dabord 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.