Как исправить SMTPServerDisconnected в /accounts/register/ Соединение неожиданно закрыто в django

Я работаю над проектом с использованием django, где пользователь должен зарегистрироваться и получить ссылку активации на электронную почту и войти в систему. все работает нормально пользователь может зарегистрироваться, но не может увидеть ссылку активации на электронной почте вместо этого он приносит ошибку: SMTPServerDisconnected at /accounts/register/ Connection unexpectedly closed in django

Здесь находится часть моего файла settings.py, в котором я сохранил MAIL = rukiaselemani360@gmail.com и PASSWORD - пароль, сгенерированный App Password после включения двухфакторной аутентификации на аккаунте Gmail.

# settings.py

mail = os.environ.get("MAIL")
mail_pass = os.environ.get("PASSWORD")

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = mail
EMAIL_HOST_PASSWORD = mail_pass
DEFAULT_FROM_EMAIL = mail

# views.py

from .forms import RegistrationForm
from django.contrib.sites.shortcuts import get_current_site
from django.template.loader import render_to_string
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.utils.encoding import force_bytes, force_str
from .tokens import account_activation_token
from django.core.mail import EmailMessage
from django.contrib import messages
from django.shortcuts import redirect, render
from django.contrib.auth import get_user_model, login
from django.urls import reverse

def index(request):
    messages_to_display = messages.get_messages(request)
    return render(request, "index.html", {"messages": messages_to_display})

def register_user(request):
    form = RegistrationForm()  # Initialize the form instance
    if request.method == "POST":
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = False
            user.save()

            current_site = get_current_site(request)
            mail_subject = "Activate your Account"
            message = render_to_string("registration/account_activate_email.html", {
                "user": user,
                "domain": current_site.domain,
                "uid": urlsafe_base64_encode(force_bytes(user.pk)),
                "token": account_activation_token.make_token(user),
            })
            to_email = form.cleaned_data.get("email")
            email = EmailMessage(mail_subject, message, to=[to_email])
            email.send()

            messages.success(request, "Please check your email to complete the registration")
            return redirect("index")
    return render(request, "registration/register.html", {"form": form})

def activate(request, uidb64, token):
    User = get_user_model()

    try:
        uid = force_str(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
    except (TypeError, ValueError, OverflowError, User.DoesNotExist):
        user = None

    if user is not None and account_activation_token.check_token(user, token):
        user.is_active = True
        user.save()

        login(request, user)

        messages.success(request, "Your account has been successfully activated!")
        return redirect(reverse("login"))
    else:
        messages.error(request, "Activation Link is Invalid or Expired")
        return redirect("index")

Вернуться на верх