L'envoi de belles lettres est une partie importante de toute application moderne. Qu'il s'agisse d'une inscription, d'une notification ou d'un envoi, un simple text/plain ne suscite plus d'émotions. Mais les e-mails HTML, c'est du vrai marketing 💥
Dans cet article, nous verrons comment créer et utiliser des modèles d'e-mail avec HTML et CSS dans un projet Python. C'est simple et très utile !

🔧 Pourquoi avez-vous besoin de modèles HTML pour les e-mails ?
📌 Organiser la structure de la lettre
🖼 Ajouter des styles, des boutons, des images
👀 Rendre le courrier visuellement attrayant
📱 Adapter aux appareils mobiles
🛠️ Qu'allons-nous utiliser ?
smtplib— pour envoyer des lettresemail.message.EmailMessage— pour générer une lettreJinja2— pour générer du code HTML avec des variablesHTML + встроенный CSS— pour l'enregistrement
📁 Structure du projet
email_project/
├── main.py
├── templates/
│ └── welcome.html🧠 Étape 1 : modèle de lettre HTML (templates/welcome.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body { font-family: Arial, sans-serif; background-color: #f9f9f9; padding: 20px; }
.container { background: white; padding: 30px; border-radius: 10px; max-width: 600px; margin: auto; }
h1 { color: #333; }
p { color: #555; }
.button { background-color: #007bff; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; }
</style>
</head>
<body>
<div class="container">
<h1>Привет, {{ name }}!</h1>
<p>Спасибо за регистрацию. Добро пожаловать в наш проект!</p>
<a href="{{ link }}" class="button">Подтвердить email</a>
</div>
</body>
</html>🧪 Étape 2 : Génération de la lettre dans main.py
import smtplib
from email.message import EmailMessage
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('welcome.html')
html_content = template.render(name="Code", link="https://itcodik.com/confirm")
msg = EmailMessage()
msg['Subject'] = 'Welcome!'
msg['From'] = 'noreply@example.com'
msg['To'] = 'user@example.com'
msg.set_content("You have a new email")
msg.add_alternative(html_content, subtype='html')
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('your_email@gmail.com', 'your_password')
smtp.send_message(msg)Important : ne codez jamais le mot de passe en dur, utilisez des variables d'environnement ou .env
📌 Conseils pour la mise en page des lettres
Ce qu'il faut prendre en compte | Pourquoi est-ce important |
|---|---|
✅ Styles en ligne | Les courriers électroniques coupent <style> |
✅ Structure simple | Mieux <table> pour la fiabilité |
❌ Ne pas utiliser JS | Il ne fonctionne pas dans les lettres |
✅ Images via URL | Ne pas joindre en tant que fichiers sans nécessité |
✅ Tester dans Gmail, Outlook | Différents moteurs d'affichage |
📤 Exemples d'utilisation
Inscription : lettre de confirmation
Récupération du mot de passe
Bulletin d'information
Notification de commande
Lettre de soutien
👀 Comment tester une lettre ?
Vous pouvez enregistrer le fichier HTML localement :
with open("preview.html", "w", encoding="utf-8") as f:
f.write(html_content)🧩 Où cela peut-il être utile
Dans les projets Flask (
flask-mail)Dans Django (
EmailMultiAlternatives)Dans FastAPI via des bibliothèques SMTP asynchrones
Dans les bots de serveur, les notifications, les intégrations CRM
🧠 Conclusion
Créer des e-mails HTML en Python est facile ! L'essentiel est un modèle, un peu de style et un envoi soigné.
Si vous souhaitez expérimenter les envois et la génération automatique de lettres, dans l'application Code vous trouverez des cours étape par étape, des modèles et un soutien communautaire. Venez ou écrivez à notre chat Telegram ✌️
💬 Voulez-vous un modèle de lettre avec une mise en page réactive ou une intégration avec Mailgun/SendGrid ? Écrivez-nous et nous ferons une suite !
