Django SMTPServerDisconnected at /reset_password/ Соединение неожиданно закрыто
Я пытаюсь отправить ссылку для сброса пароля пользователям, но постоянно получаю эту ошибку.
Мой views.py:
def password_reset_request_view(request):
if request.method == 'POST':
email = request.POST.get('email')
if email:
try:
user = CustomUser.objects.get(email=email)
subject = "Password Reset Requested"
email_template_name = "users/password_reset_email.html"
c = {
"email": user.email,
"domain": request.get_host(),
"site_name": "Your Site",
"uid": urlsafe_base64_encode(force_bytes(user.pk)),
"user": user,
"token": default_token_generator.make_token(user),
"protocol": 'http',
}
email_content = render_to_string(email_template_name, c)
logger.debug(f"Sending email to {user.email}")
logger.debug(f"Email content: {email_content}")
# Create an SMTP connection with debug level set to 1
connection = get_connection()
connection.open()
connection.connection.set_debuglevel(1)
send_mail(
subject,
email_content,
settings.DEFAULT_FROM_EMAIL,
[user.email],
fail_silently=False,
connection=connection
)
messages.success(request, 'A message with reset password instructions has been sent to your inbox.')
logger.debug("Email sent successfully")
return redirect('password_reset_done')
except CustomUser.DoesNotExist:
messages.error(request, 'No account found with this email address.')
logger.error("No account found with this email address")
return redirect('reset_password')
return render(request, 'users/password_reset.html')
Мой settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.mail.yahoo.com' # Your email service SMTP server
EMAIL_PORT = 587 # The port your SMTP server uses (e.g., 587 for TLS)
EMAIL_USE_TLS = True # Use TLS for security
EMAIL_HOST_USER = 'abrarshahriar360@yahoo.com' # Your email address
EMAIL_HOST_PASSWORD = 'password' # Your email password
DEFAULT_FROM_EMAIL = 'abrarshahriar360@yahoo.com' # Default from email address
Я чувствую, что мой код правильный, не знаю, почему я продолжаю получать эту ошибку. Кто-нибудь может мне помочь, пожалуйста?
Код кажется правильным, проблема в вашем почтовом провайдере. Перейдите на outlook, gmail и т. д. и посмотрите, существует ли ошибка.
Для outlook измените файл settings.py на:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp-mail.outlook.com'
EMAIL_HOST_USER = "email@outlook.com"
EMAIL_HOST_PASSWORD = "password"
DEFAULT_FROM_EMAIL = "email@outlook.com"