通过托管 SMTP 从 Django 发送电子邮件

Posted

技术标签:

【中文标题】通过托管 SMTP 从 Django 发送电子邮件【英文标题】:Sending email from Django via hosted SMTP 【发布时间】: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

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

【问题讨论】:

可以显示错误信息吗? 【参考方案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' 您可以编辑答案。 ***.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。

【讨论】:

以上是关于通过托管 SMTP 从 Django 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

从托管在 Hostgator 服务器上的 PHP 脚本发送 SMTP 电子邮件

使用SMTP和Gmail在Django上发送电子邮件

为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?

Django 通过 smtp.gmail.com 发送电子邮件的问题

如何使用 google smtp 服务器从 django 发送电子邮件?

通过 Zoho SMTP 发送电子邮件