我正在使用 Django 密码重置。
我的 中有此代码设置.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'
它会将我重定向到正确的页面,但它不会发送电子邮件。我检查了垃圾邮件文件夹等,但仍然没有:(
任何想法都非常感谢!
编辑
我尝试使用控制台对其进行测试,但出现以下错误:
>>> 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.
编辑
我的 settings.py 配置如上。出于某种原因,它以前不起作用,但现在似乎起作用了。当我跑
python manage.py shell
并使用 EmailMessage 和 send() 函数对其进行测试,我得到状态代码 1,并且我收到了电子邮件。但是,我仍然没有从 password_reset 收到电子邮件。有任何想法吗?谢谢各位的意见!
最佳答案
当您在 Django shell 中进行发送测试时,这意味着您的电子邮件设置配置良好。
如果您仍未收到来自 的电子邮件密码重置你必须在这个领域搜索你的问题。
您必须知道密码重置电子邮件仅发送给事件用户 (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()]
关于Django:重置密码不发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325729/