Сброс пароля в Django. Не отправлять почту - PullRequest
9 голосов
/ 23 декабря 2011

Я пытаюсь заставить работать сброс пароля django, но электронное письмо для сброса не отправляется.

Я знаю, что моя электронная почта настроена правильно, потому что следующее работает как в оболочке, так и в одном из моих представлений (я использую его для получения поддержки по электронной почте).

from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.',
          'admin@mydomain.com',['me@gmail.com'], fail_silently=False)

Я могу перейти к просмотру пароля для сброса ( пароль / сброс / ), и после того, как я отправлю ему электронное письмо, он правильно перенаправит меня на пароль / сброс / сделано / , но это не отправляет электронное письмо.

Вот мой urls.py:

(r'^password/reset/$','django.contrib.auth.views.password_reset'),
(r'^password/reset/done/$','django.contrib.auth.views.password_reset_done'),
(r'^password/reset/confirm/$','django.contrib.auth.views.password_reset_confirm'),
(r'^password/reset/complete/$','django.contrib.auth.views.password_reset_confirm'),
(r'^password/change/$','django.contrib.auth.views.password_change'),
(r'^password/change/done/$','django.contrib.auth.views.password_change_done'),

Вот мой password_reset_form.html:

<html>
<head>
    <link rel="stylesheet" type="text/css" href="/media/css/style_login.css" />
    <title>Información de acceso requerida</title>
</head>
<body>
    <div id="wrapper">
        <h1>Recuperar password</h1>
        <p>Utilice este formulario cuando desee recuperar el password para su usuario.</p>
        {% if form.errors %}
        <p>No hay un usuario registrado con ese correo electronico.</p>
        {% endif %}
        <form method="post" action="{% url django.contrib.auth.views.password_reset_done %}">
            {% csrf_token %}
            {{ form }}
            <input class="login" type="submit" value="Recuperar" />
        </form>
    </div>
</body>

Есть идеи? Спасибо

Ответы [ 2 ]

9 голосов
/ 13 января 2012

Я должен упомянуть, что я использую hostgator в качестве своего провайдера. Так что это мои settings.py

EMAIL_HOST      = 'my-domain.com'
EMAIL_HOST_PASSWORD = 'my cpanel password'
EMAIL_HOST_USER = 'my cpanel user'
EMAIL_PORT      = 25
EMAIL_USE_TLS   = False
DEFAULT_FROM_EMAIL  = 'webmaster@my-host.com'
SERVER_EMAIL    = 'root@my-domain.com'

Вышеуказанные настройки работают!

7 голосов
/ 24 августа 2016

В моем случае я создал пользователей, используя create_user().Моя идея состояла в том, чтобы создать группу учетных записей и затем сказать людям, что они могут перейти к форме сброса пароля, чтобы установить свой пароль.Я думаю, что это плохо, если вам нужно сказать им: «Используйте пароль« welcome123 », а затем не забудьте изменить свой пароль» или что-то подобное.

Я узнал, не прошел ли я Password='foo' или также, еслиЯ передал Password=None на create_user() сброс пароля не отправлен .Это потому, что Django иногда использует пустой пароль, чтобы знать, что ему не нужно проходить аутентификацию локально, а использовать LDAP или что-то подобное.

Так что теперь я делаю это:

User.objects.create_user(
  user_name,
  email=user_email,
  password=os.urandom(32),
)

И яможет заставить людей использовать функцию сброса пароля для своих новых учетных записей.Я думаю, было бы замечательно, если бы в create_user была возможность автоматически отправлять пользователям электронные письма для активации учетной записи!

...