如何使用私人域名电子邮件地址通过Django发送电子邮件?

时间:2016-06-30 19:28:55

标签: python django django-email

我使用namecheap.com注册了域名和私人电子邮件。我正在尝试通过此私人电子邮件发送电子邮件。但是,我在标题中收到错误。

在我的settings.py中,我有以下设置:

EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = 'contact@mysite.com'
EMAIL_HOST_PASSWORD = 'my password'
EMAIL_PORT = 465
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

我正在尝试通过视图发送电子邮件:

send_mail(
    'Subject here',
    'Here is the message.',
    'contact@mysite.com',
    ['myname@gmail.com'],
    fail_silently=False,
)

但是,当我加载视图时,我收到此错误,并尝试发送电子邮件:

SMTPServerDisconnected at /
Connection unexpectedly closed: [Errno 54] Connection reset by peer

我做错了什么?我该如何解决这个问题?感谢。

修改

将端口更改为587后,出现以下错误:

SMTPException at /
STARTTLS extension not supported by server.

知道为什么吗?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

EMAIL_HOST = os.getenv("EMAIL_HOST")
EMAIL_PORT = os.getenv("EMAIL_PORT")
EMAIL_USE_SSL = os.getenv("EMAIL_USE_SSL")
EMAIL_HOST_USER =  os.getenv("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = os.getenv("EMAIL_HOST_PASSWORD")

使用SSL代替TLS解决了我的问题。

答案 1 :(得分:1)

您使用的EMAIL_USE_TLS = True不适用于托管域电子邮件。

使用EMAIL_USE_SSL = True

这是完整的配置

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL = True
EMAIL_HOST = 'mail.<domain>.com'
EMAIL_HOST_USER = '<some_name>@<domain>.com'
EMAIL_HOST_PASSWORD = '<user_password>'
EMAIL_PORT = 465

答案 2 :(得分:0)