From 9f23f85b87cb820b9b19232bf0575823952682e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Mon, 4 Feb 2019 22:09:57 +0100 Subject: [PATCH 1/4] Handle errors when sending welcome emails during member registraton --- gestioncof/views.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/gestioncof/views.py b/gestioncof/views.py index bd397ed6..9d95d608 100644 --- a/gestioncof/views.py +++ b/gestioncof/views.py @@ -1,5 +1,6 @@ import uuid from datetime import timedelta +from smtplib import SMTPRecipientsRefused import unicodecsv from custommail.shortcuts import send_custom_mail @@ -445,6 +446,25 @@ def registration_form2(request, login_clipper=None, username=None, fullname=None ) +def notify_new_member(request, member: User): + if not member.email: + messages.warning( + request, + "GestioCOF n'a pas d'adresse mail pour {}, ".format(member) + + "aucun email de bienvenue n'a été envoyé", + ) + # Try to send a welcome email and report SMTP errors + try: + send_custom_mail( + "welcome", "cof@ens.fr", [member.email], context={"member": member} + ) + except SMTPRecipientsRefused: + messages.error( + request, + "Error lors de l'envoi de l'email de bienvenue à {}".format(member.email), + ) + + @buro_required def registration(request): if request.POST: @@ -494,12 +514,7 @@ def registration(request): # Enregistrement du profil profile = profile_form.save() if profile.is_cof and not was_cof: - send_custom_mail( - "welcome", - "cof@ens.fr", - [member.email], - context={"member": member}, - ) + notify_new_member(request, member) # Enregistrement des inscriptions aux événements for form in event_formset: if "status" not in form.cleaned_data: From c319780ab5ff9588945463e3d71a2b93dd078d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Mon, 4 Feb 2019 22:14:18 +0100 Subject: [PATCH 2/4] CHANGELOG: less email errors during registration --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index af129af3..74278d21 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ - On ne peut plus modifier des comptes COF depuis l'interface K-Fêt - Le champ de paiement BdA se fait au niveau des attributions +- Affiche un message d'erreur plutôt que de crasher si échec de l'envoi du mail + de bienvenue aux nouveaux membres - On peut supprimer des comptes et des articles K-Fêt - Passage à Django2 - Dev : on peut désactiver la barre de debug avec une variable shell From ab89002cfcc38ca16afcb469cbf284c4d87b412c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Mon, 4 Feb 2019 22:20:59 +0100 Subject: [PATCH 3/4] Clearer error message --- gestioncof/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gestioncof/views.py b/gestioncof/views.py index 9d95d608..784e3a61 100644 --- a/gestioncof/views.py +++ b/gestioncof/views.py @@ -461,7 +461,9 @@ def notify_new_member(request, member: User): except SMTPRecipientsRefused: messages.error( request, - "Error lors de l'envoi de l'email de bienvenue à {}".format(member.email), + "Error lors de l'envoi de l'email de bienvenue à {} ({})".format( + member, member.email + ), ) From 405f95a43bfa7bbc04b6dc41d94501bcad907539 Mon Sep 17 00:00:00 2001 From: Basile Clement Date: Mon, 17 Jun 2019 21:21:30 +0200 Subject: [PATCH 4/4] Early return if there is no email --- gestioncof/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gestioncof/views.py b/gestioncof/views.py index 784e3a61..c69f70f6 100644 --- a/gestioncof/views.py +++ b/gestioncof/views.py @@ -453,6 +453,8 @@ def notify_new_member(request, member: User): "GestioCOF n'a pas d'adresse mail pour {}, ".format(member) + "aucun email de bienvenue n'a été envoyé", ) + return + # Try to send a welcome email and report SMTP errors try: send_custom_mail(