MON 1.2 : Apprendre à envoyer des mails en Backend
- MON
- smtp
- vert
- Kévin BERNARD
Ce MON a pour objectif d'expliquer comment envoyer des emails dans différents langages de programmation et de garantir la sécurité dans les échanges.
Prérequis
Connaissances de base en programmation (HTML, JavaScript, PHP, Python).
Table des matières
1. Introduction
L'objectif de ce MON est de découvrir les différentes façons d'envoyer un email dans différents langages de manière sécurisée.
Qu'est-ce que SMTP ?
SMTP est le protocole qu'utilise notre ordinateur pour acheminer les emails d'un client à un destinataire (le serveur de messagerie).
Liens
2. Exemples de code
2.1 Envoi d'email avec HTML
Avec HTML, il n'est pas possible d'envoyer des emails directement, mais on peut créer un formulaire ou un lien qui ouvre la boîte mail (prêt à send) via mailto
.
Liens
Exemple de lien mailto
:
html
Envoyer un email
🚨 Limitation : Cette méthode dépend de la messagerie de celui qui clique sur le lien et n'envoie pas automatiquement d'email.
2.2 Envoi d'email avec Node.js (Nodemailer)
Nodemailer est une bibliothèque très populaire quand on utilise JavaScript pour envoyer des emails.
Liens
Installation :
bash
npm install nodemailer
Exemple de code :
javascript
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'votreEmail@gmail.com',
pass: 'votreMotDePasse'
}
});
let mailOptions = {
from: 'votreEmail@gmail.com',
to: 'destinataire@example.com',
subject: 'Test Email',
text: 'Hello world!'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log(error);
} else {
console.log('Email envoyé : ' + info.response);
}
});
2.3 Envoi d'email avec Python (smtplib)
En Python, on utilise la bibliothèque smtplib pour envoyer des emails via le protocole SMTP.
Liens
Exemple de code :
python
import smtplib
from email.mime.text import MIMEText
sender = 'votreEmail@gmail.com'
receiver = 'destinataire@example.com'
msg = MIMEText('Hello, ceci est un email envoyé via Python!')
msg['Subject'] = 'Test Email'
msg['From'] = sender
msg['To'] = receiver
try:
with smtplib.SMTP('smtp.gmail.com', 587) as server:
server.starttls()
server.login(sender, 'votreMotDePasse')
server.sendmail(sender, receiver, msg.as_string())
print("Email envoyé avec succès")
except Exception as e:
print(f"Erreur : {e}")
🚨 Attention : Ne jamais laisser vos mots de passe dans le code. Utilisez des variables d’environnement pour plus de sécurité.
3. Sécurité
L'envoi d'emails en programmation nécessite de manipuler des informations sensibles comme les identifiants d'accès au serveur SMTP. Comment sécuriser ses informations ?
3.1 Utilisation des variables d’environnement
Au lieu de stocker vos identifiants dans le code, stockez-les dans des fichiers d'environnement .env
à bien mettre dans le .gitignore
.
Exemple :
Dans Node.js :
javascript
require('dotenv').config();
const email = process.env.EMAIL;
const password = process.env.PASSWORD;
Dans votre fichier .env
:
bash
EMAIL=votreEmail@gmail.com
PASSWORD=votreMotDePasse
3.2 Utilisation de TLS/SSL
Pour protéger les données pendant leur transmission, il est crucial d'activer TLS ou SSL lorsque vous configurez votre serveur SMTP. Par exemple, Nodemailer et PHPMailer supportent ces protocoles nativement.
4. API d'envoi d'emails
En plus de l'envoi via SMTP, on peut utiliser des API spécialisées pour simplifier l'envoi de mails à grande échelle. Des services comme SendGrid, Mailgun, Postmark, ou EmailJS permettent d'avoir des API fiables pour envoyer des emails.
Exemple avec EmailJS (en JavaScript) :
EmailJS permet d'envoyer des emails directement depuis une application front-end, sans avoir besoin de serveur backend.
- Créez un compte sur EmailJS.
- Configurez votre service email (par exemple Gmail) et créez un template dans l'interface EmailJS.
- Obtenez votre User ID et votre Service ID.
Liens
Exemple de code :
html
javascript
// Script pour envoyer l'email avec EmailJS
document.getElementById('emailForm').addEventListener('submit', function(event) {
event.preventDefault();
emailjs.init('YOUR_USER_ID'); // Remplacez par votre User ID
emailjs.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', this)
.then(function() {
console.log('Email envoyé avec succès !');
}, function(error) {
console.log('Erreur dans l\'envoi de l\'email:', error);
});
});
function send_mail(){
let parametres = {
nom_prenom: document.getElementById("nom_prenom").value,
mail: document.getElementById("mail").value,
message: document.getElementById("message").value
};
emailjs.send('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', parametres).then(function() {
alert("Votre message a bien été envoyé !");
}).catch(function(error) {
console.error("Échec de l'envoi : ", error);
alert("Échec de l'envoi, veuillez réessayer.");
});
}
🚨 Remarque : L'avantage d'EmailJS est qu'il permet d'envoyer des emails directement depuis le navigateur, évitant la configuration d'un serveur backend.
5. Conclusion
Quand on veut envoyer des emails en programmation, l'important est de savoir sécuriser les informations du user. Ici, je ne parle pas des interactions avec le backend en cas d'une base de données avec plusieurs utilisateurs.