2011-12-22 9 views
6

私はdjangoのパスワードリセットを働かせようとしていますが、リセットされた電子メールは送信されません。Djangoのパスワードリセット。メールを送信していません

以下はシェルと私のビューの両方で動作するため(私は自分自身にサポート電子メールを受け取るために使用しています)、電子メールが正しく構成されていることが分かります。

from django.core.mail import send_mail 
send_mail('Subject here', 'Here is the message.', 
      '[email protected]',['[email protected]'], fail_silently=False) 

私は自分のパスワードリセットビューに取得することができます(パスワード/ /リセット)と私はそれを私の電子メールを与えた後、それは正しくパスワード/リセット/行わ/に私をリダイレクトしますが、それは送信されませんEメール。ここで

は私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> 

任意のアイデア?ありがとう

+0

下記のようなご意見をお聞かせください。 2日後にそれを受け入れたものとしてマークすることができます。それは質問が未回答の質問タブから消えてしまいます。 –

+0

クール、私はコミュニティに新しいですし、その種のヒントは本当に役に立ちます:) – Darkade

+0

あなたは元に戻ってきれいにしてくれてありがとう、ありがとう! –

答えて

7

私は私のプロバイダとして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 = '[email protected]' 
SERVER_EMAIL = '[email protected]' 

上記の設定が機能します!

+1

同じ問題がありました。欠落している値はDEFAULT_FROM_EMAILです。それが設定されていない場合、電子メールは送信されません。 – Max

3

私の場合は、create_user()を使用してユーザーを作成しました。私の考えは、たくさんのアカウントを作成し、パスワードを設定するためのパスワードリセットフォームに行くことができるようにすることでした。私はあなたがそれらに 'パスワードを使用してくださいwelcome123 "とパスワードを変更することを忘れないように言わなければならないと思います。

私はcreate_user()パスワードのリセットにPassword=Noneを渡された場合、私はまたPassword='foo'を渡したりしていない場合、私は見つけたがを送っされていません。これは、Djangoが空のパスワードを使用してローカルで認証する必要はなく、LDAPなどを使用することがあることを認識することがあるためです。

は、だから今、私はこれを実行します。

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

をそして、私は彼らの新しいアカウントのパスワードリセット機能を使用する人に指示することができます。私はcreate_userにアカウントのアクティベーションの電子メールをユーザーに自動的に送信するオプションがあるとすばらしいと思います。

+0

ありがとう、私はこれを理解しようとしている時間のために私の髪を引き出しています。 ところで、 'パスワード= User.objects.make_random_password()' –

+0

おかげであります! FYIどちらos.urandom()またはmake_random_password()は私のために働いた、私が使用:django.contrib.auth.hashersから がmake_password パスワード= make_password(User.objects.make_random_passwordを())をインポート – python1981

+0

誰でも考えるか、これをすべきであることIMMEDIAGTELYを停止し、ユーザーがサインアップできるカスタムフォームを作成します。あなたが管理者の承認、電子メールのバリデーションなどのようなことをしたい場合は... http://django-registration.readthedocs.io/enを使用してください –