如何使用托管的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
这些设置不一样吗?我究竟做错了什么?为什么一个工作而另一个工作失败?
答案 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。