Browse Source

Add signal to send registration email upon user creation

pull/2426/head
GONCALOUNI 6 months ago
parent
commit
87c4075e69
3 changed files with 36 additions and 1 deletions
  1. 2
      backend/cli.py
  2. 3
      backend/users/apps.py
  3. 32
      backend/users/signals.py

2
backend/cli.py

@ -1,4 +1,4 @@
import argparse
ccimport argparse
import multiprocessing
import os
import platform

3
backend/users/apps.py

@ -4,3 +4,6 @@ from django.apps import AppConfig
class UsersConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "users"
def ready(self):
import users.signals

32
backend/users/signals.py

@ -0,0 +1,32 @@
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth import get_user_model
from django.core.mail import send_mail, BadHeaderError
from django.conf import settings
import logging
logger = logging.getLogger(__name__)
User = get_user_model()
@receiver(post_save, sender=User)
def send_registration_email(sender, instance, created, **kwargs):
if created:
subject = 'Welcome to Our Service!'
message = (
f"Hello {instance.username},\n\n"
"Thank you for registering with us. Your account has been successfully created.\n\n"
"You can now log in and start using our service.\n\n"
"Best regards,\nThe Team"
)
try:
send_mail(
subject,
message,
settings.DEFAULT_FROM_EMAIL,
[instance.email],
fail_silently=False,
)
except BadHeaderError:
logger.error("Invalid header found while sending email to: %s", instance.email)
except Exception as e:
logger.error("Error sending registration email to %s: %s", instance.email, e)
Loading…
Cancel
Save