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

时间:2013-07-04 04:35:33

标签: django email smtp django-email

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

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

但是,在两者我的settings.py和Thunderbird中输入我的凭据后,Thunderbird可以下载并发送电子邮件,但是当尝试执行时,Django超时错误“SMTPServerDisconnected:Connection意外关闭”同样的。

我的传出服务器(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

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

2 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:5)

以下设置:

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。