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 diff --git a/gestioncof/views.py b/gestioncof/views.py index bd397ed6..c69f70f6 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,29 @@ 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é", + ) + return + + # 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, member.email + ), + ) + + @buro_required def registration(request): if request.POST: @@ -494,12 +518,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: