使用Python通过Django发送Godaddy电子邮件

7

我有这些设置

EMAIL_HOST = 'smtpout.secureserver.net'
EMAIL_HOST_USER = 'username@domain.com'
EMAIL_HOST_PASSWORD = 'password'
DEFAULT_FROM_EMAIL = 'username@domain.com'
SERVER_EMAIL = 'username@domain.com'
EMAIL_PORT = 465
EMAIL_USE_TLS = True
SMTP_SSL = True

我和Godaddy沟通后得知以下端口和设置:

smtpout.secureserver.net
ssl
465

587
TLS ON

3535
TLS ON

25
TLS ON

80
TLS ON
or
TLS OFF

我尝试了所有的组合。如果我将TLS设置为True,我就会得到
STARTTLS extension not supported by the server.

如果我将端口设置为465,我会得到“连接关闭”的错误提示,如下图所示:Connetion Closed如果我使用其他端口组合,情况也一样。
EMAIL_HOST = 'smtpout.secureserver.net'
EMAIL_HOST_USER = 'username@domain.com'
EMAIL_HOST_PASSWORD = 'password'
DEFAULT_FROM_EMAIL = 'username@domain.com'
SERVER_EMAIL = 'username@domain.com'
EMAIL_PORT = 25
EMAIL_USE_TLS = False

无效地址

为了验证,我使用了谷歌邮件设置来测试通过Python发送电子邮件是否有效,并且它是有效的。

现在我想切换到GoDaddy,我知道我们使用TLS登录电子邮件,即使是POP3下载也需要使用TLS,而且它是有效的,所以我不确定为什么Python/Django选项无法工作。你能帮忙吗?

我已经联系过Godaddy,但他们无法提供帮助,因为这是一个软件问题——他们所有的设置和端口都是有效的,所以我没有别的人可以问了。


不是直接的答案,但是您可以使用像Zoho这样的免费电子邮件提供商与您的域名配合使用,无需担心托管提供商的设置。https://stackoverflow.com/a/45326023/466066 - Jose Cherian
1
谢谢Jose关注此事,我知道那是一个选项,但我正在寻找这个特定的解决方案,我相信很多人都想知道答案。 - Radek
6个回答

9

这对我在我的GoDaddy电子邮件上有效。由于GoDaddy在Office365中设置了您的电子邮件,因此可以使用smtp.office365.com。

settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.office365.com'
EMAIL_HOST_USER = 'myemail@GoDaddyDomain.com'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = 'myPassword'
EMAIL_PORT = 587
EMAIL_USE_SSL = False
EMAIL_USE_TLS = True

这是views.py中处理发送邮件的方法。其中的"email"变量来自于用户表单。

from django.conf import settings
from django.core.mail import EmailMessage
def send_email(subject, body, email):
    try:
        email_msg = EmailMessage(subject, body, settings.EMAIL_HOST_USER, [settings.EMAIL_HOST_USER], reply_to=[email])
        email_msg.send()
        return "Message sent :)"
    except:
        return "Message failed, try again later :("

尝试了一段时间后,这个解决方案是唯一一个对我有效的。不知道这是否是一个建议的方法。 - Anupam
即使是Godaddy的支持团队也无法帮我解决问题。这个方法完美无缺地运行了。 - Amandeep Singh

1
我发现这段代码对我很有用。希望对别人也有帮助。我使用SMTP godaddy webmail。你可以将这段代码放入你的Django设置文件中。
由于你不能同时设置SSL和TSL,否则会出现如下错误:同时只能有一个为true:SSL或TSL

setting.py
# Emailing details
EMAIL_HOST = 'md-97.webhostbox.net'
EMAIL_HOST_USER = 'mailer@yourdomain'
EMAIL_HOST_PASSWORD = 'your login password'
EMAIL_PORT = 465
EMAIL_USE_SSL = True

1

已经有一段时间了,但也许答案可以帮助其他人。我刚刚与GoDaddy讨论了这个问题,他们告诉我需要的配置如下:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtpout.secureserver.net'
EMAIL_HOST_USER = env('EMAIL_HOST_USER')
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')
EMAIL_PORT = 80
EMAIL_USE_SSL = False
EMAIL_USE_TLS = True

这是Django的配置设置,但我相信它可以复制到其他平台上。
此外,他们提供的电子邮件DNS配置是,

email dns config


1

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - BrokenBenchmark

1
我成功决定访问该网站https://sso.secureserver.net/?app=emailsetup&realm=pass&。似乎在访问时,您可以启用外部使用电子邮件。
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtpout.secureserver.net'
EMAIL_HOST_USER='aXXXX@xxxx'
EMAIL_HOST_PASSWORD='AsgGSDAGSasdsagas'
DEFAULT_FROM_EMAIL='aXXXX@xxxx' 
EMAIL_PORT=465
EMAIL_USE_SSL=True 
EMAIL_USE_TLS=False

它对我起了作用


0

在我的情况下,这种方法对我有效:

#settings.py

EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST='smtpout.secureserver.net'
EMAIL_PORT=465
EMAIL_USE_SSL=True
EMAIL_USE_TLS=False
EMAIL_HOST_USER='your@domain'
EMAIL_HOST_PASSWORD='yourpass'
ADMIN_EMAIL='your@domain'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接