13

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

我认为这很简单,只需在我的 settings.py中填写标准 EMAIL_* 字段即可。

但是,在我的 settings.py 和 Thunderbird 中输入我的凭据后 Thunderbird 可以下载和发送电子邮件,但是 Django 在尝试执行相同操作时超时并出现错误“SMTPServerDisconnected:连接意外关闭”。

我在 Thunderbird 中为我的传出服务器 (SMTP) 的工作设置:

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

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

4

2 回答 2

27

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

于 2013-07-04T22:01:03.770 回答
7

以下设置:

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。

于 2016-11-16T07:53:36.290 回答