Django发送电子邮件:SMTPServerDisconnected:连接意外关闭

Use*_*511 8 python email django

您好我想发送电子邮件激活使用django registration redux.

这是我的setting.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

ACCOUNT_ACTIVATION_DAYS = 3
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'blahblah@gmail.com'
EMAIL_HOST_PASSWORD = 'blahpassword'
EMAIL_PORT = 465
EMAIL_USE_SSL = True

LOGIN_REDIRECT_URL = '/'
Run Code Online (Sandbox Code Playgroud)

当我尝试

python manage.py shell

来自django.core.mail导入send_mail

send_mail('测试','这是测试','youremail @ gmail.com',['toemail@gmail.com'])

我收到这样的错误:

    Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/apsijogja/djangogirls/myvenv/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 62, in send_mail
    return mail.send()
  File "/home/apsijogja/djangogirls/myvenv/local/lib/python2.7/site-packages/django/core/mail/message.py", line 286, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/apsijogja/djangogirls/myvenv/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 92, in send_messages
    new_conn_created = self.open()
  File "/home/apsijogja/djangogirls/myvenv/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 50, in open
    self.connection = connection_class(self.host, self.port, **connection_params)
  File "/usr/lib/python2.7/smtplib.py", line 249, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 310, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python2.7/smtplib.py", line 361, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
SMTPServerDisconnected: Connection unexpectedly closed
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个问题吗?

Moh*_*med 8

要使用端口465,您需要调用smtplib.SMTP_SSL().目前,它调用smtplib.SMTP()..所以,你的端口更改从465587

如果你想使用PORT 465,

您的 EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'

`EMAIL_PORT=465`  
Run Code Online (Sandbox Code Playgroud)

你需要安装 django_smtp_ssl

否则你可以保持,

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_PORT=465
Run Code Online (Sandbox Code Playgroud)

  • 更新:Django &gt;=1.7 包括对带有 SSL/TLS 的 SMTP 的支持;因此 django-smtp-ssl 已过时。https://github.com/bancek/django-smtp-ssl (4认同)

小智 2

请查看此链接: https: //code.djangoproject.com/ticket/9575 并尝试通过 shell 发送,它应该可以工作