Skip to main content
 首页 » 编程设计

python之Django 1.6 : Forgot password not sending email

2025年05月04日25zhwl

我正在尝试实现 django 的内置忘记密码功能,但我从未收到过电子邮件。我检查了我的垃圾邮件文件夹,但仍然没有。输入电子邮件后,它显示密码重置成功页面,但我从未收到电子邮件。

设置.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = 'something@gmail.com' 
EMAIL_HOST_PASSWORD = 'something' 
 
DEFAULT_FROM_EMAIL = 'something@gmail.com' 
SERVER_EMAIL = 'something@gmail.com' 

网址.py

url(r'^forgot-password/$', views.forgot_password, name="forgot-password"), 

View .py

def forgot_password(request): 
    if request.method == 'POST': 
        return password_reset(request,  
            from_email=request.POST.get('email')) 
    else: 
        return render(request, 'meddy1/forgot_password.html') 

我已经尝试通过执行以下操作在 python manage.py shell 中测试它

from django.core.mail import EmailMessage 
email = EmailMessage('Subject', 'Message', to=['something@gmail.com']) 
email.send() 

它给了我 1 的输出,但我仍然没有收到任何电子邮件!!

然后我通过执行以下操作尝试了这个 python manage.py shell

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

它给了我 1 的输出,我成功地收到了收件箱中的电子邮件。

我不知道为什么它不通过表单发送电子邮件。

请您参考如下方法:

我没有收到电子邮件的原因是因为我在注册时将用户的电子邮件地址存储为用户名。因为我想使用电子邮件地址而不是用户名进行身份验证。因此,每当我在忘记密码页面中输入电子邮件地址时,它都会将我重定向到显示电子邮件已发送的页面。但我从来没有收到任何电子邮件,因为它从未在数据库中找到电子邮件。理想情况下,它实际上应该引发一个错误,指出找不到电子邮件地址。但事实并非如此!!!

我需要找到一种方法来做到这一点。

所以目前我将用户的电子邮件地址保存为用户名和电子邮件地址。我知道这样做不是一个好主意,因为数据冗余。但它有效!