Python 使用365电子邮件地址的SMTPLIB SSL电子邮件时出错
(587)当我运行这个程序时,我得到一个SSL错误:[SSL:error\u VERSION\u NUMBER]error VERSION NUMBER(\u SSL.c:1056) (465)我得到一个超时错误 我尝试使用端口465和587。当我使用不同的端口时,会出现不同的错误。我试过995只是为了好玩,但还是没有运气。如果我使用我的gmail帐户,我没有问题 我是否需要对我的电子邮件帐户执行某些操作,以使其正常工作。我也尝试了.SMTP(),但仍然没有成功Python 使用365电子邮件地址的SMTPLIB SSL电子邮件时出错,python,email,ssl,office365,smtplib,Python,Email,Ssl,Office365,Smtplib,(587)当我运行这个程序时,我得到一个SSL错误:[SSL:error\u VERSION\u NUMBER]error VERSION NUMBER(\u SSL.c:1056) (465)我得到一个超时错误 我尝试使用端口465和587。当我使用不同的端口时,会出现不同的错误。我试过995只是为了好玩,但还是没有运气。如果我使用我的gmail帐户,我没有问题 我是否需要对我的电子邮件帐户执行某些操作,以使其正常工作。我也尝试了.SMTP(),但仍然没有成功 context = ssl.cr
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.office365.com", 587, context=context) as server:
发件人:
SMTP_SSL应用于从连接开始就需要SSL且使用starttls()不合适的情况
因此,SMTP_SSL用于隐式SMTP,其公共端口为465。端口587用于显式SMTP,其中完成了普通连接,之后使用STARTTLS命令升级到SSL
这里发生的情况是,客户机尝试向服务器讲SSL/TLS,而服务器在此阶段不希望使用SSL/TLS,因此使用非TLS数据进行响应。尽管如此,它们还是被解释为TlS,这导致了这种奇怪的[SSL:error\u VERSION\u NUMBER]
若要解决此问题,请将端口465(而不是587)与SMTP_SSL(Office365不支持)一起使用,或将端口587与以下端口一起使用:
您可以添加发送电子邮件的完整代码吗?“版本”可能指的是SSL密码的版本。服务器向您提供什么SSL版本?Exchange服务器运行一开始就不应该编写的软件并非完全不常见。上下文是否仍应与ssl相等。创建\u default\u context()?我得到一个AttributeError:运行此操作时输入。smtp=smtplib.smtp(“smtp.office365.com”,587)context=ssl.create_default_context(),smtp.starttls(context=context)作为服务器:server.login(from_地址,密码)@RobertoGonzalez:
starttls
不返回服务器。它应该是带有smtplib.SMTP的
而不是使用smtplib.SMTP\u SSL…然后再使用server.starttls(…)
。我在上面发布了我现在运行的内容。我相信我是按照你的建议来做的,但如果我错了,请纠正我。@RobertoGonzalez:,使用smtp.starttls(context=context)作为服务器:
-这是错误的。请看我最后的评论和编辑后的答案。
smtp = smtplib.SMTP("smtp.office365.com",587)
context = ssl.create_default_context()
with smtp.starttls(context=context) as server:
server.login(from_address, password)
for i, r in newhire[mask].iterrows():
server.sendmail(
from_address,
r["Email"],
message.format(Employee=r["Employee Name"],
StartDate=r["StartDate"],
PC=r["PC"],
Title=r["Title"],
Email=r["Email"],
)
)
with smtplib.SMTP("smtp.office365.com", 587) as server:
server.starttls(context=context)