Django:重置密码不发送电子邮件

use*_*032 10 django gmail smtp django-authentication django-email

我正在使用Django密码重置.

我在settings.py中有这个代码:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myusername@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'
DEFAULT_FROM_EMAIL = 'myusername@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
SERVER_EMAIL = 'myusername@gmail.com'
Run Code Online (Sandbox Code Playgroud)

它将我重定向到正确的页面,但它不会发送电子邮件.我检查了垃圾邮件文件夹等,但仍然没有:(

任何想法都非常感谢!

编辑

我试图使用控制台测试它,但我收到以下错误:

>>> email = EmailMessage('Mail test', 'this is a test', to=['myusername@gmail.com'])
>>> email.send()

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/message.py", line 255, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 88, in send_messages
new_conn_created = self.open()
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 55, in open
self.connection.login(self.username, self.password)
File "/usr/lib/python2.7/smtplib.py", line 576, in login
raise SMTPException("SMTP AUTH extension not supported by server.")

SMTPException: SMTP AUTH extension not supported by server.
Run Code Online (Sandbox Code Playgroud)

编辑

我有如上配置的settings.py.由于某种原因它以前没有工作,但现在似乎是.我跑的时候

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

并使用EmailMessage和send()函数测试它,我得到状态代码1,我收到电子邮件.但是,我仍然没有收到来自password_reset的电子邮件.有任何想法吗?谢谢各位的意见!

Pao*_*rre 5

当您在Django Shell中进行发送测试时,这意味着您的电子邮件设置已正确配置。

如果仍然无法从password_reset获取电子邮件,则必须在此字段中搜索问题。

您必须知道,密码重置电子邮件仅发送给活动用户(is_active),并且仅在其具有可用密码(has_usable_password)的情况下发送。

如果用户输入的密码无效,则Django只会静默不发送重置电子邮件。

在Django Shell中使用以下代码测试所有用户:

from django.contrib.auth import get_user_model

[(u.email, u.is_active, u.has_usable_password()) for u in get_user_model().objects.all()]
Run Code Online (Sandbox Code Playgroud)


eRI*_*RIZ 2

GMail 使用 SSL,而不是 TLS。这就是您的应用程序无法联系他们的服务器的原因。

https://support.google.com/mail/answer/78775?hl=en