Как исправить 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")