未收到密码重置电子邮件

时间:2020-05-04 10:54:02

标签: python django

我对Django很陌生。我正在通过django中的电子邮件重置密码。我正在使用所有4个默认的类视图。我可以转到PasswordResetDoneView,页面上的说明已发送至我的邮件。但是我还没有收到任何邮件。

Urls.py

from django.urls import path
from . import views
from django.contrib.auth.views import (
    LoginView,LogoutView,PasswordResetView,PasswordResetDoneView,PasswordResetConfirmView,PasswordResetCompleteView
    )

urlpatterns=[
    path('',views.home),
    path('login/',LoginView.as_view(template_name='accounts/login.html'),name='login page'),
    path('logout/',LogoutView.as_view(template_name='accounts/logout.html'),name='logout page'),
    path('register/',views.registration,name='register page'),
    path('profile/',views.profile,name='profile'),
    path('profile/edit_profile/',views.edit_profile,name='edit-profile'),
    path('profile/change-password/',views.change_password,name='edit-profile'),

    path('profile/reset-password/',PasswordResetView.as_view(),name='paassword_reset_view'),
    path('profile/reset-password/done/',PasswordResetDoneView.as_view(),name='password_reset_done'),
    path('profile/reset-password/confirm/<uidb64>/<token>/',PasswordResetConfirmView.as_view(),name='password_reset_confirm'),
    path('profile/reset-password/complete/',PasswordResetCompleteView.as_view(),name='password_reset_complete'),
]

我还用必要的配置配置了settings.py文件。我还为发送URL的邮件启用了安全性较低的选项。 setting.py

EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend"
EMAIL_FILE_PATH = os.path.join(BASE_DIR, "sent_emails")
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'projectexample@gmail.com'
EMAIL_HOST_PASSWORD = 'Password'

还尝试在shell中单独使用send_mail。返回1。

希望获得解决方案

预先感谢

1 个答案:

答案 0 :(得分:1)

Django将仅向具有有效密码的活动用户发送电子邮件。在外壳中编写以下代码,以针对这两个条件运行快速检查:

from django.core.mail import send_mail
users = [(user.email, user.is_active, user.has_usable_password()) for user in get_user_model().objects.all()]
users

第二,您需要在密码重置页面上写一个注册电子邮件。如果您编写未分配给任何用户的电子邮件,则不会发送密码重置电子邮件(请勿在除非已分配给某些用户的字段中写入您的个人电子邮件)。< / p>

最后,检查发件人电子邮件的“已发送”文件夹,以验证是否已发送电子邮件,并检查收件人的垃圾邮件文件夹,以验证是否已发送邮件。