通过托管 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 电子邮件
为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?
Django 通过 smtp.gmail.com 发送电子邮件的问题