29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
import uuid
|
|
from django.conf import settings
|
|
from django.core.mail import EmailMultiAlternatives
|
|
from django.template.loader import render_to_string
|
|
from django.urls import reverse
|
|
from django.utils.http import urlsafe_base64_encode
|
|
from django.utils.encoding import force_bytes
|
|
from django.contrib.auth.tokens import default_token_generator
|
|
|
|
def send_activation_email(user, request):
|
|
"""
|
|
Envía un correo de activación al usuario con un link único.
|
|
"""
|
|
token = default_token_generator.make_token(user)
|
|
uid = urlsafe_base64_encode(force_bytes(user.pk))
|
|
activation_link = request.build_absolute_uri(
|
|
reverse('cuser:activate', kwargs={'uidb64': uid, 'token': token})
|
|
)
|
|
subject = 'Activa tu cuenta'
|
|
context = {
|
|
'username': user.username,
|
|
'activation_link': activation_link,
|
|
}
|
|
text_content = f'Hola {user.username},\nPor favor haz clic en el siguiente enlace para activar tu cuenta: {activation_link}'
|
|
html_content = render_to_string('email/activation_email.html', context)
|
|
email = EmailMultiAlternatives(subject, text_content, settings.DEFAULT_FROM_EMAIL, [user.email])
|
|
email.attach_alternative(html_content, "text/html")
|
|
email.send(fail_silently=False)
|