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

Cer*_*rin 13 email django smtp django-email

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

我认为这是直截了当的,只需填写我的settings.py中的标准EMAIL_*字段.

然而,进入我的证书后,这两个我的settings.py和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
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

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

Cer*_*rin 26

原来问题是Django 的默认SMTP后端不支持SSL,而我的SMTP主机需要它(而不仅仅是TLS).幸运的是,我发现了一个简单易懂的 SSL后端,添加EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'到我的settings.py中,一切正常.

  • 我可以以某种方式给你更多的声望点吗?这只是让我尝试连接到 namecheap 的 SMTP 服务器时保持理智。 (2认同)

jav*_*ved 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
Run Code Online (Sandbox Code Playgroud)

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