我使用namecheap.com注册了域名和私人电子邮件。我正在尝试通过此私人电子邮件发送电子邮件。但是,我在标题中收到错误。
在我的settings.py中,我有以下设置:
EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = 'contact@mysite.com'
EMAIL_HOST_PASSWORD = 'my password'
EMAIL_PORT = 587
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,
)
然而,我收到此错误:
SMTPException at /
STARTTLS extension not supported by server.
知道为什么吗?任何帮助表示赞赏。
修改
将EMAIL_USE_TLS更改为False,并将其删除以单独检查两者后,我现在收到此错误:
SMTP AUTH extension not supported by server.
知道为什么吗?谢谢!
答案 0 :(得分:10)
您的服务器mail.privateemail.com
不知道什么是STARTTLS
SMTP Commnad
这可能发生在两种情况下:
判断,您正在连接到端口587,该端口应提供简单的通信 - 它是1或3。
如果您希望这只是正常工作,请删除EMAIL_USE_TLS = True
或将其设置为False
,否则 - 应修复SMTP服务器配置。
答案 1 :(得分:2)
您可以通过在settings.py
中进行以下更改来尝试使用SSL而不是TLS
EMAIL_USE_SSL = True
EMAIL_PORT = 465
希望有帮助
答案 2 :(得分:1)
在邮件服务器上设置TLS或使用mmap()
。
答案 3 :(得分:0)
我可以通过添加服务器名称的端口号来解决修改下面一行代码的问题:
server = smtplib.SMTP('mail.mycompany.com:587')
答案 4 :(得分:0)
不确定您是否已解决问题。我最近还尝试了NameCheap的2个月免费私人电子邮件包。这是我的代码,自2018年1月起它适用于我:
import smtplib
from email.message import EmailMessage
fromaddr = 'account@yourdomain.com'
toaddrs = "recipient@somedomain.com"
SMTPServer = 'mail.privateemail.com'
port = 465 #587
login = "account@yourdomain.com"
password = "password"
msg = EmailMessage()
msgtxt = "http://www.google.com"+"\n\n"+"This is a test."
msg.set_content(msgtxt)
msg['Subject'] = "Test message"
msg['From'] = fromaddr
msg['To'] = toaddrs
server = smtplib.SMTP_SSL(SMTPServer, port) #use smtplib.SMTP() if port is 587
#server.starttls()
server.login(login, password)
server.send_message(msg)
server.quit()
希望这有帮助!
PS。您也可以使用端口587,但必须使用smtplib.SMTP()
代替smtplib.SMTP_SSL()
,还必须取消注释server.starttls()
行。
答案 5 :(得分:-1)
在 gmail 上测试
from smtplib import SMTP_SSL, SMTP, SMTPAuthenticationError
from ssl import create_default_context
from email.message import EmailMessage
sender = 'aaa@bbb.com'
description = "This is the test description supposed to be in body of the email."
msg = EmailMessage()
msg.set_content(description)
msg['Subject'] = 'This is a test title'
msg['From'] = f"Python SMTP <{sender}>"
msg['To'] = 'bbb@ccc.com'
def using_ssl():
try:
server = SMTP_SSL(host='smtp.gmail.com', port=465, context=create_default_context())
server.login(sender, password)
server.send_message(msg=msg)
server.quit()
server.close()
except SMTPAuthenticationError:
print('Login Failed')
def using_tls():
try:
server = SMTP(host='smtp.gmail.com', port=587)
server.starttls(context=create_default_context())
server.ehlo()
server.login(sender, password)
server.send_message(msg=msg)
server.quit()
server.close()
except SMTPAuthenticationError:
print('Login Failed')