Python 服务器不支持STARTTLS扩展-尝试通过Django和私人电子邮件地址发送电子邮件时出现此错误
我使用namescape.com注册了一个域名和一封私人电子邮件。我正在尝试通过此私人电子邮件发送电子邮件。然而,我在标题中发现了错误 在my settings.py中,我有以下设置:Python 服务器不支持STARTTLS扩展-尝试通过Django和私人电子邮件地址发送电子邮件时出现此错误,python,django,django-email,Python,Django,Django Email,我使用namescape.com注册了一个域名和一封私人电子邮件。我正在尝试通过此私人电子邮件发送电子邮件。然而,我在标题中发现了错误 在my 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_B
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.
知道为什么吗?感谢您的帮助
编辑
将电子邮件\u USE\u TLS更改为False,并将其删除以分别检查两者后,我现在收到此错误:
SMTP AUTH extension not supported by server.
知道为什么吗?谢谢 在邮件服务器上设置TLS或使用
EMAIL\u use\u TLS=False
您的服务器mail.privatemail.com
不知道什么是STARTTLS
SMTP通信
这可能发生在两种情况下:
如果您想让这一切正常工作,请删除
电子邮件\u USE\u TLS=True
或将其设置为False
,否则-SMTP服务器配置应该是固定的。我可以通过修改以下代码行来解决问题,方法是添加带有服务器名称的端口号:
server = smtplib.SMTP('mail.mycompany.com:587')
不确定你是否已经解决了这个问题。我最近还试用了namescape提供的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()
希望这有帮助
另外,您也可以使用端口587,但是您必须使用
smtplib.SMTP()
而不是smtplib.SMTP\u SSL()
,并且还必须取消对server.starttls()
行的注释。您可以通过在settings.py>中进行以下更改来尝试SSL而不是TLS
EMAIL_USE_SSL = True
EMAIL_PORT = 465
希望这有助于在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')
从smtplib导入SMTP\u SSL、SMTP、SMTPAuthenticationError
从ssl导入创建默认上下文
从email.message导入EmailMessage
发送者aaa@bbb.com'
description=“这是邮件正文中应该包含的测试描述。”
msg=EmailMessage()
msg.set_内容(说明)
msg['Subject']=“这是一个测试标题”
msg['From']=f“Python SMTP”
msg['To']='bbb@ccc.com'
使用_ssl()定义:
尝试:
server=SMTP\u SSL(host='SMTP.gmail.com',port=465,context=create\u default\u context())
服务器登录名(发件人、密码)
server.send_消息(msg=msg)
server.quit()
server.close()
除了SMTPAuthenticationError:
打印('登录失败')
使用_tls()定义:
尝试:
服务器=SMTP(主机=SMTP.gmail.com',端口=587)
server.starttls(context=create\u default\u context())
server.ehlo()
服务器登录名(发件人、密码)
server.send_消息(msg=msg)
server.quit()
server.close()
除了SMTPAuthenticationError:
打印('登录失败')
谢谢,但这仍然不起作用。现在,我得到了这个错误:服务器不支持SMTP身份验证扩展。这是完全不同的错误,这意味着您的SMTP服务器不支持身份验证,删除/禁用电子邮件\u主机\u用户和电子邮件\u主机\u密码选项,然后在地板上卷起并在为垃圾邮件发送者打开SMTP服务器时哭喊…等等什么?你是说我不能用刚买的私人邮件发送邮件?那么有什么解决办法吗?谁说没有?看起来每个人都可以:DAny,怎么办?谢谢,但这仍然不起作用。现在,我发现了这个错误:服务器不支持SMTP身份验证扩展。嗨,TerenceLam,你修复了吗?我也是,总是犯错误!!!你现在知道解决办法了吗?先谢谢你。