如何使用 Django 和 gmail 重置密码

How to reset password using Django and gmail

我正在尝试让用户允许重置他们忘记的密码 我收到这个错误

(530, b'5.7.0 Authentication Required. Learn more at\n5.7.0 https://support.google.com/mail/?p=WantAuthError 77sm14812049pfx.85 - gsmtp', 'webmaster@localhost')

我有以下代码。# settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('EMAIL_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASS')

和urls.py

path('password-reset', auth_views.PasswordResetView.as_view(template_name='register/passwords/password_reset.html'), name='password_reset'),
path('password-reset/done', auth_views.PasswordResetDoneView.as_view(template_name='register/passwords/password_reset_done.html'), name='password_reset_done'),
path('password-reset-confirm/<uidb64>/<token>', auth_views.PasswordResetConfirmView.as_view(template_name='register/passwords/password_reset_confirm.html'), name='password_reset_confirm'),
path('password-reset-reset', auth_views.PasswordResetCompleteView.as_view(template_name='register/passwords/password_reset_complete.html'), name='password_reset_complete'),

首先确保您的环境变量正常工作。它们是否显示预期值?尝试将它们打印到终端进行检查。

其次,确保您在 gmail 帐户中注册了您的应用程序。 this link 会有帮助。您可以通过更改 settings.py:

中的电子邮件设置来尝试测试您的代码
EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend"
EMAIL_FILE_PATH = os.path.join(BASE_DIR, "sent_mail")

这会在您的基本目录的 sent_mail 文件夹中创建电子邮件。如果您在那里收到电子邮件,则您的代码可以正常工作。

祝你好运!

**编辑

刚刚为我正在创建的应用程序设置了电子邮件设置,但遇到了同样的错误。通过在我的 Google 帐户中注册该应用程序来修复它。您只会获得特定应用程序的自定义密码。将此复制到您的 email-password 环境变量中,它应该可以正常工作!

https://myaccount.google.com/ --> 安全 -> 应用密码

*注意:确保添加 2 因素身份验证。