from django.conf import settings from django.contrib.auth.tokens import default_token_generator from django.core.mail import EmailMultiAlternatives from django.template.loader import render_to_string from django.urls import reverse from django.utils.encoding import force_bytes from django.utils.http import urlsafe_base64_encode def send_activation_email(request, user): uid = urlsafe_base64_encode(force_bytes(user.pk)) token = default_token_generator.make_token(user) activation_path = reverse("users:activate", kwargs={"uidb64": uid, "token": token}) activation_url = request.build_absolute_uri(activation_path) context = { "user": user, "activation_url": activation_url, "site_name": getattr(settings, "SITE_NAME", "SantehRay"), } subject = render_to_string("users/emails/activation_subject.txt", context).strip() text_body = render_to_string("users/emails/activation_email.txt", context) html_body = render_to_string("users/emails/activation_email.html", context) email = EmailMultiAlternatives( subject=subject, body=text_body, from_email=settings.DEFAULT_FROM_EMAIL, to=[user.email], ) email.attach_alternative(html_body, "text/html") email.send()