Djoser "Password Changed Confirmation" Email не отправляется
Добрый день,
Я успешно перезаписал 3 шаблона Djoser по умолчанию и могу получать эти письма, но я не могу добиться отправки письма "Password Changed Confirmation".
Согласно djoser/conf.py
, djoser/email.py
и djoser/templates/email
кажется, что я все делаю правильно. Но не очевидно, почему этот не отправляется, так как не возникает никаких ошибок.
В каталоге проекта есть следующие соответствующие файлы и пути:
project
- core
- email.py
- settings.py
- templates
- email
- activation.html # works
- confirmation.html # works
- password_changed_confirmation.html # does not work
- password_reset.html # works
settings.py
был установлен в соответствии с документами Djoser docs.
DJOSER = {
'LOGIN_FIELD': 'email',
'USER_CREATE_PASSWORD_RETYPE': True,
'SET_PASSWORD_RETYPE': True,
'SEND_ACTIVATION_EMAIL': True,
'ACTIVATION_URL': 'activate/{uid}/{token}',
'SEND_CONFIRMATION_EMAIL': True,
'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/{uid}/{token}',
# I set this to True as per the docs:
'PASSWORD_CHANGED_EMAIL_CONFIRMATION:': True,
'USERNAME_RESET_SHOW_EMAIL_NOT_FOUND': True,
'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': True,
'SERIALIZERS': {
'user_create': 'users.serializers.UserCreateSerializer',
'user': 'users.serializers.UserCreateSerializer',
},
'EMAIL': {
# These 3 templates send:
'activation': 'core.email.ActivationEmail',
'confirmation': 'core.email.ConfirmationEmail',
'password_reset': 'core.email.PasswordResetEmail',
# This one does not:
'password_changed_confirmation': 'core.email.PasswordChangedConfirmationEmail',
}
}
В email.py
я создаю свой пользовательский класс для ссылки на шаблон. Операторы печати даже не срабатывают, так что я не думаю, что это вообще вызывается.
from djoser import email
# Override the default Djoser confirmation email.
class PasswordChangedConfirmationEmail(email.PasswordChangedConfirmationEmail):
template_name = 'email/password_changed_confirmation.html'
def send(self, to, *args, **kwargs):
print(f"Sending password changed mail to {to}")
try:
super().send(to, *args, **kwargs)
except:
print(f"Couldn't send mail to {to}")
raise
print(f"Password changed mail sent successfully to {to}")
<
Sending password reset mail to ['someone@somewhere.com']
Password reset mail sent successfully to ['someone@somewhere.com']
[25/Apr/2022 13:53:56] "POST /api/v1/users/reset_password/ HTTP/1.1" 204 0
Затем я перехожу на URL, который он предоставляет, и отправляю POST-запрос с предоставленным uid
и token
успешно дохожу до reset_password_confirm
конечной точки.
[25/Apr/2022 14:13:33] "POST /api/v1/users/reset_password_confirm/ HTTP/1.1" 204 0
Я могу успешно изменить пароль, но нет ни одного оператора печати из этого класса PasswordChangedConfirmationEmail
и не получено никакого письма.
Что я делаю не так?
Любая помощь будет оценена по достоинству, спасибо.