如何在 Django 上发送重置密码电子邮件?
How can I send a reset password email on Django?
在使用Django框架创建我的第一个网站的过程中,我遇到了一个小问题,我还没有找到解决方案。因此,当用户想要重置他或她的密码时,我想向 him/her 发送一封重置邮件。到目前为止,我有这个:
urls.py
from django.contrib.auth import views as auth_views
......
path('password-reset/', auth_views.PasswordResetView.as_view(template_name='registration/password_reset_form.html'),
name='password_reset'),
path('password-reset-confirm/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html'),
name='password_reset_confirm'),
path('password-reset/done/',
auth_views.PasswordResetDoneView.as_view(template_name='registration/password_reset_done.html'),
name='password_reset_done'),
path('password-reset-complete/',
auth_views.PasswordResetCompleteView.as_view(template_name='registration/password_reset_complete.html')),
....
settings.py
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_POST = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('traces_email')
EMAIL_HOST_PASSWORD = os.environ.get('traces_email_password')
我为 link 创建了一个令牌生成器:
token_generator.py
from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
def _make_hash_value(self, user, timestamp):
return (
six.text_type(user.pk) + six.text_type(timestamp) + six.text_type(user.is_active)
)
account_activation_token = TokenGenerator()
当我完成重置流程时,它没有发送任何电子邮件。它仍然发送到我的终端。
有人可以帮我解决这个问题吗?非常感谢您的宝贵时间!
这个设置
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
告诉 django 将消息发送到您的终端。要真正发送电子邮件,您需要使用
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
这在Django Docs中有描述。
在使用Django框架创建我的第一个网站的过程中,我遇到了一个小问题,我还没有找到解决方案。因此,当用户想要重置他或她的密码时,我想向 him/her 发送一封重置邮件。到目前为止,我有这个:
urls.py
from django.contrib.auth import views as auth_views
......
path('password-reset/', auth_views.PasswordResetView.as_view(template_name='registration/password_reset_form.html'),
name='password_reset'),
path('password-reset-confirm/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html'),
name='password_reset_confirm'),
path('password-reset/done/',
auth_views.PasswordResetDoneView.as_view(template_name='registration/password_reset_done.html'),
name='password_reset_done'),
path('password-reset-complete/',
auth_views.PasswordResetCompleteView.as_view(template_name='registration/password_reset_complete.html')),
....
settings.py
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_POST = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('traces_email')
EMAIL_HOST_PASSWORD = os.environ.get('traces_email_password')
我为 link 创建了一个令牌生成器: token_generator.py
from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
def _make_hash_value(self, user, timestamp):
return (
six.text_type(user.pk) + six.text_type(timestamp) + six.text_type(user.is_active)
)
account_activation_token = TokenGenerator()
当我完成重置流程时,它没有发送任何电子邮件。它仍然发送到我的终端。 有人可以帮我解决这个问题吗?非常感谢您的宝贵时间!
这个设置
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
告诉 django 将消息发送到您的终端。要真正发送电子邮件,您需要使用
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
这在Django Docs中有描述。