Yue*_*e Y 9 python django smtp
我正在尝试配置Django的send_email,以便我可以向用户发送密码重置电子邮件.到目前为止,我没有运气让它上班.我已经设置了一个基本的Gmail帐户(没有Google App等),并且在我的Django settings.py中我有:
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_PASSWORD = 'my_password'
EMAIL_HOST_USER = 'my_account@gmail.com'
EMAIL_PORT = 587
MAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'admin@my-site.com'
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过这样做来测试:
python manage.py shell
>>> from django.core.mail import send_mail
>>> send_mail('test', 'test', 'test@test.com', ['my-personal-email@gmail.com'])
Run Code Online (Sandbox Code Playgroud)
我收到错误信息
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Program Files\Python27\lib\site-packages\django\core\mail\__init__.py
", line 62, in send_mail
connection=connection).send()
File "C:\Program Files\Python27\lib\site-packages\django\core\mail\message.py"
, line 255, in send
return self.get_connection(fail_silently).send_messages([self])
File "C:\Program Files\Python27\lib\site-packages\django\core\mail\backends\sm
tp.py", line 88, in send_messages
new_conn_created = self.open()
File "C:\Program Files\Python27\lib\site-packages\django\core\mail\backends\sm
tp.py", line 55, in open
self.connection.login(self.username, self.password)
File "C:\Program Files\Python27\lib\smtplib.py", line 577, 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)
有谁知道发生了什么事!任何提示都表示赞赏!
确保您还设置了以下EMAIL_BACKEND设置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
对于这个问题的回答已经晚了;但希望能帮助该主题的未来读者。
正如@WAF 所指出的,EMAIL_USE_TLS = True 可以解决此错误。
此外,如果通过 django 管理工具的 shell 命令验证分辨率,我们必须在添加上述设置后重新启动 shell 并重复验证步骤。
以下总结了 django shell 中 gmail 验证的最小配置:
在设置.py中:
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '<email.id>'
EMAIL_HOST_PASSWORD = '<pw>'
EMAIL_USE_TLS = True
Run Code Online (Sandbox Code Playgroud)
在 django 管理工具的 shell 中:
from django.core.mail import send_mail
send_mail('From django', 'Test email from dj manage', 'from@example.com', ['to@example.com'])
... 1
Run Code Online (Sandbox Code Playgroud)
小智 5
我发现问题了...你必须使用这个代码
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
代替
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10983 次 |
| 最近记录: |