13.11. Créer un projet Django : envoyer des e-mails
Lors de la création d'un système avec Python et Django, l'une des fonctionnalités les plus utiles que vous puissiez implémenter est la possibilité d'envoyer des e-mails. Qu'il s'agisse d'informer les utilisateurs des mises à jour, de confirmer des abonnements ou de réinitialiser des mots de passe, l'envoi d'e-mails est un outil essentiel pour toute application Web. Dans ce chapitre, nous explorerons comment configurer Django pour envoyer des e-mails.
Configuration du serveur de messagerie
Pour envoyer des e-mails avec Django, vous avez besoin d'un serveur de messagerie SMTP. Django prend en charge de nombreux serveurs de messagerie tels que Gmail, SendGrid, Amazon SES et autres. Pour les besoins de ce didacticiel, nous allons utiliser Gmail.
Tout d'abord, vous devez configurer les paramètres de messagerie dans votre fichier settings.py. Voici un exemple de configuration de Gmail :
Les paramètres ci-dessus sont explicites. EMAIL_HOST et EMAIL_PORT sont les paramètres du serveur SMTP Gmail. EMAIL_USE_TLS est défini sur True car Gmail utilise TLS. EMAIL_HOST_USER et EMAIL_HOST_PASSWORD sont respectivement votre adresse e-mail et votre mot de passe Gmail.
Envoi d'e-mails
Une fois les paramètres de votre serveur de messagerie configurés, vous pouvez désormais envoyer des e-mails. Django fournit une fonction appelée send_mail pour envoyer des emails. Voici un exemple d'utilisation de la fonction send_mail :
La fonction send_mail accepte cinq paramètres. Le premier est le sujet de l’e-mail. Le second est le corps de l’e-mail. Le troisième est l'adresse e-mail de l'expéditeur. Le quatrième est une liste d'adresses e-mail des destinataires. Le dernier paramètre, fail_silently, est un booléen. Si elle est définie sur True, la fonction ne générera pas d'exceptions si l'e-mail ne peut pas être envoyé. Si False, la fonction lèvera des exceptions si l'e-mail ne peut pas être envoyé.
Envoyer des e-mails avec HTML
Django prend également en charge l'envoi d'e-mails HTML. Pour envoyer un email avec HTML, vous pouvez utiliser la fonction EmailMessage. Voici un exemple d'utilisation de la fonction EmailMessage pour envoyer un e-mail en HTML :
La fonction EmailMessage accepte plusieurs paramètres. Les quatre premiers sont identiques à la fonction send_mail. Le cinquième paramètre est une liste d'adresses e-mail en BCC. Le sixième paramètre est une liste d'adresses e-mail pour la réponse. Le dernier paramètre est un dictionnaire d'en-têtes supplémentaires pour l'e-mail.
Pour ajouter du HTML à un e-mail, vous pouvez utiliser la méthode content_subtype de l'objet EmailMessage. Voici un exemple :
J'espère que ce chapitre vous a permis de bien comprendre comment envoyer des e-mails avec Django. Dans le chapitre suivant, nous explorerons comment intégrer Django aux bases de données.