【问题标题】:Sending email from Django via hosted SMTP通过托管 SMTP 从 Django 发送电子邮件
【发布时间】:2013-07-01 23:11:57
【问题描述】:

如何使用托管的 SMTP 帐户(特别是在 Namecheap 上)从 Django 发送电子邮件?

我认为这很简单,只需在我的 settings.py 中填写 standard EMAIL_* fields

但是,在 both 我的 settings.py 和 Thunderbird 中输入我的凭据后,Thunderbird 可以下载和发送电子邮件,但 Django 在尝试执行此操作时超时并出现错误“SMTPServerDisconnected:连接意外关闭”一样的。

我的外发服务器 (SMTP) 在 Thunderbird 中的工作设置:

Server Name: oxmail.registrar-servers.com
Port: 465
User Name: myuser@mydomain.com
Authentication method: Normal password
Connection Security: SSL/TLS

我的 Django settings.py 中的非工作设置:

EMAIL_HOST = 'oxmail.registrar-servers.com'
EMAIL_HOST_USER = 'myuser@mydomain.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 465
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

这些设置不一样吗?我究竟做错了什么?为什么一个工作而另一个失败?

【问题讨论】:

  • 可以显示错误信息吗?

标签: django email smtp django-email


【解决方案1】:

原来问题在于 Django 中的默认 SMTP 后端不支持 SSL,而我的 SMTP 主机需要它(不仅仅是 TLS)。幸运的是,我找到了 dirt-simple SSL 后端,将 EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend' 添加到我的 settings.py 中,一切正常。

【讨论】:

  • 我可以给你更多的声望点吗?这只是挽救了我尝试连接到 namecheap 的 SMTP 服务器的理智。
  • 一年多后它仍然有效 - 我刚刚将它与 Django 1.6.5 一起使用
  • 现在是 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 您可以编辑答案。 stackoverflow.com/a/28075147/969984
【解决方案2】:

以下设置:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'mail.yourdomain.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'no-reply@yourdomain.com'
EMAIL_HOST_PASSWORD = 'password'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

为我工作。 我测试的 django 版本是 1.8.8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2014-01-21
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2013-09-06
    相关资源
    最近更新 更多