From b97cf6e02b92ba6750662bbf9e9c3af6ad19ab38 Mon Sep 17 00:00:00 2001 From: Luc SORIGNET Date: Sat, 1 Mar 2025 16:08:24 +0100 Subject: [PATCH] feat: passage des mail au format HTML --- Back-End/N3wtSchool/settings.py | 14 +--- Back-End/Subscriptions/mailManager.py | 69 +++++++++++-------- .../templates/emails/inscription.html | 52 ++++++++++++++ .../templates/emails/resetPassword.html | 49 +++++++++++++ 4 files changed, 142 insertions(+), 42 deletions(-) create mode 100644 Back-End/Subscriptions/templates/emails/inscription.html create mode 100644 Back-End/Subscriptions/templates/emails/resetPassword.html diff --git a/Back-End/N3wtSchool/settings.py b/Back-End/N3wtSchool/settings.py index ef5315e..bc75281 100644 --- a/Back-End/N3wtSchool/settings.py +++ b/Back-End/N3wtSchool/settings.py @@ -65,7 +65,7 @@ MIDDLEWARE = [ 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'N3wtSchool.middleware.ContentSecurityPolicyMiddleware' ] @@ -230,21 +230,9 @@ EMAIL_HOST_PASSWORD=jsonObject['password'] EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True EMAIL_USE_SSL = False -EMAIL_INSCRIPTION_SUBJECT = '[N3WT-SCHOOL] Dossier Inscription' -EMAIL_INSCRIPTION_CORPUS = """Bonjour, -Afin de procéder à l'inscription de votre petit bout, vous trouverez ci-joint le lien vers la page d'authentification : """ + BASE_URL + """/users/login -S'il s'agit de votre première connexion, veuillez procéder à l'activation de votre compte : """ + BASE_URL + """/users/subscribe -identifiant = %s -Cordialement, -""" - -EMAIL_RELANCE_SUBJECT = '[N3WT-SCHOOL] Relance - Dossier Inscription' -EMAIL_RELANCE_CORPUS = 'Bonjour,\nN\'ayant pas eu de retour de votre part, nous vous renvoyons le lien vers le formulaire d\'inscription : ' + BASE_URL + '/users/login\nCordialement' -EMAIL_REINIT_SUBJECT = 'Réinitialisation du mot de passe' -EMAIL_REINIT_CORPUS = 'Bonjour,\nVous trouverez ci-joint le lien pour réinitialiser votre mot de passe : ' + BASE_URL + '/users/password/reset?uuid=%s\nCordialement' DOCUMENT_DIR = 'documents' diff --git a/Back-End/Subscriptions/mailManager.py b/Back-End/Subscriptions/mailManager.py index 02d3826..b783d0c 100644 --- a/Back-End/Subscriptions/mailManager.py +++ b/Back-End/Subscriptions/mailManager.py @@ -1,57 +1,68 @@ -from django.core.mail import send_mail +from django.core.mail import send_mail, EmailMultiAlternatives, EmailMessage +from django.template.loader import render_to_string +from django.utils.html import strip_tags import re from N3wtSchool import settings def envoieReinitMotDePasse(recipients, code): - send_mail( - settings.EMAIL_REINIT_SUBJECT, - settings.EMAIL_REINIT_CORPUS%(str(code)), - settings.EMAIL_HOST_USER, - [recipients], - fail_silently=False, - ) + errorMessage = '' + try: + EMAIL_REINIT_SUBJECT = 'Réinitialisation du mot de passe' + context = { + 'BASE_URL': settings.BASE_URL, + 'code': str(code) + } + subject = EMAIL_REINIT_SUBJECT + html_message = render_to_string('emails/resetPassword.html', context) + plain_message = strip_tags(html_message) + from_email = settings.EMAIL_HOST_USER + send_mail(subject, plain_message, from_email, [recipients], html_message=html_message) + except Exception as e: + errorMessage = str(e) + + return errorMessage + def sendRegisterForm(recipients): errorMessage = '' try: print(f'{settings.EMAIL_HOST_USER}') - send_mail( - settings.EMAIL_INSCRIPTION_SUBJECT, - settings.EMAIL_INSCRIPTION_CORPUS%[recipients], - settings.EMAIL_HOST_USER, - [recipients], - fail_silently=False, - ) + # Préparation du contexte pour le template + EMAIL_INSCRIPTION_SUBJECT = '[N3WT-SCHOOL] Dossier Inscription' + context = { + 'BASE_URL': settings.BASE_URL, + 'email': recipients + } + + subject = EMAIL_INSCRIPTION_SUBJECT + html_message = render_to_string('emails/inscription.html', context) + plain_message = strip_tags(html_message) + from_email = settings.EMAIL_HOST_USER + + send_mail(subject, plain_message, from_email, [recipients], html_message=html_message) + except Exception as e: errorMessage = str(e) - + return errorMessage def envoieRelanceDossierInscription(recipients, code): + EMAIL_RELANCE_SUBJECT = '[N3WT-SCHOOL] Relance - Dossier Inscription' + EMAIL_RELANCE_CORPUS = 'Bonjour,\nN\'ayant pas eu de retour de votre part, nous vous renvoyons le lien vers le formulaire d\'inscription : ' + BASE_URL + '/users/login\nCordialement' errorMessage = '' try: send_mail( - settings.EMAIL_RELANCE_SUBJECT, - settings.EMAIL_RELANCE_CORPUS%str(code), + EMAIL_RELANCE_SUBJECT, + EMAIL_RELANCE_CORPUS%str(code), settings.EMAIL_HOST_USER, [recipients], fail_silently=False, ) except Exception as e: errorMessage = str(e) - + return errorMessage - -def envoieSEPA(recipients, ref): - send_mail( - settings.EMAIL_SEPA_SUBJECT%str(ref), - settings.EMAIL_SEPA_CORPUS, - settings.EMAIL_HOST_USER, - [recipients], - fail_silently=False, - ) - def isValid(message, fiche_inscription): # Est-ce que la référence du dossier est VALIDE subject = message.subject diff --git a/Back-End/Subscriptions/templates/emails/inscription.html b/Back-End/Subscriptions/templates/emails/inscription.html new file mode 100644 index 0000000..e0daed5 --- /dev/null +++ b/Back-End/Subscriptions/templates/emails/inscription.html @@ -0,0 +1,52 @@ + + + + + Confirmation d'inscription + + + +
+
+

Confirmation d'inscription

+
+
+

Bonjour,

+

Nous vous confirmons la réception de votre demande d'inscription, vous trouverez ci-joint le lien vers la page d'authentification : {{BASE_URL}}/users/login

+

S'il s'agit de votre première connexion, veuillez procéder à l'activation de votre compte à cette url : {{BASE_URL}}/users/subscribe

+

votre identifiant est : {{ email }}

+

Merci de compléter votre dossier d'inscription en suivant les instructions fournies.

+

Cordialement,

+

L'équipe N3wt School

+
+ +
+ + \ No newline at end of file diff --git a/Back-End/Subscriptions/templates/emails/resetPassword.html b/Back-End/Subscriptions/templates/emails/resetPassword.html new file mode 100644 index 0000000..dc46047 --- /dev/null +++ b/Back-End/Subscriptions/templates/emails/resetPassword.html @@ -0,0 +1,49 @@ + + + + + Confirmation d'inscription + + + +
+
+

Confirmation d'inscription

+
+
+

Bonjour,

+

Vous trouverez ci-joint le lien pour réinitialiser votre mot de passe : {{BASE_URL}}/users/password/reset?uuid={{code}}

+

Cordialement,

+

L'équipe N3wt School

+
+ +
+ + \ No newline at end of file