Как отправить электронное письмо для сброса пароля из Django, используя django-rest-auth и Mailgun - PullRequest
0 голосов
/ 28 декабря 2018

Я настраиваю аутентификацию пользователя в Django с помощью Django rest auth.Большинство вещей работает хорошо, но я не могу получить письма для сброса пароля для отправки, либо в фиктивном бэкэнде, либо с помощью Mailgun.

Я следовал этому учебнику , чтобы настроить базовую аутентификацию.Все в учебнике прекрасно работает, но не объясняет, как выполнить сброс пароля.

У меня есть учетная запись в Mailgun и я пытаюсь использовать песочницу для отправки писем.

# api/urls.py
from django.urls import include, path

urlpatterns = [
    path('rest-auth/', include('rest_auth.urls')),
    path('rest-auth/registration/', include('rest_auth.registration.urls')),
    path('users/', include('users.urls')),
]

Я запрашиваю сброс пароля для зарегистрированного пользователя через форму API для просмотра: http://127.0.0.1:8000/api/v1/rest-auth/password/reset/

Я ввожу в форму адрес электронной почты и нажимаю «POST».На странице отображается следующее:

POST /api/v1/rest-auth/password/reset/
HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "detail": "Password reset e-mail has been sent."
}

Однако электронное письмо не отправлено!

В журналах почтового пистолета нет активности - электронное письмо не было отправлено.

Когда я смотрюна вкладке «Сеть» в браузере я не вижу запроса на публикацию.

Вот мои настройки с использованием Mailgun:

EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'postmaster@sandboxxxxx.mailgun.org'
EMAIL_HOST_PASSWORD = 'xxxx'
EMAIL_USE_TLS = True

(я поставил свою настоящую песочницу и пароль в фактическомфайл)

Во-первых, с помощью этого в settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

Я ожидаю, что текст сообщения электронной почты будет зарегистрирован в терминале, где работает сервер. '/ manage.py runserver,Однако ничего не регистрируется.

Тогда, с этим в settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

Я бы ожидал, что письма будут отправлены Mailgun.

Какая очевидная глупостья пропустил?

Я думаю, что Django rest auth включает шаблон электронной почты по умолчанию, поэтому мне не нужно создавать его вручную, если я должен?

Есть ли что-то еще, что я должен сделать дляСтраница администратора на http://127.0.0.1:8000/api/v1/rest-auth/password/reset/, чтобы сделать свое дело?http://127.0.0.1:8000/api/v1/rest-auth/login/ работает нормально, я могу войти в систему и увидеть мой токен, возвращенный с сервера.

Очень благодарен за любые идеи!

1 Ответ

0 голосов
/ 02 января 2019

У меня нет хорошего ответа на этот вопрос, но я отказался от использования django-rest-auth для сброса пароля и вместо этого использую URL-адреса и шаблоны django-contrib-auth.Это не полностью соответствует моему интерфейсу React, но, по крайней мере, обеспечивает функциональность пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...