Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用365电子邮件地址的SMTPLIB SSL电子邮件时出错_Python_Email_Ssl_Office365_Smtplib - Fatal编程技术网

Python 使用365电子邮件地址的SMTPLIB SSL电子邮件时出错

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

(587)当我运行这个程序时,我得到一个SSL错误:[SSL:error\u VERSION\u NUMBER]error VERSION NUMBER(\u SSL.c:1056)

(465)我得到一个超时错误

我尝试使用端口465和587。当我使用不同的端口时,会出现不同的错误。我试过995只是为了好玩,但还是没有运气。如果我使用我的gmail帐户,我没有问题

我是否需要对我的电子邮件帐户执行某些操作,以使其正常工作。我也尝试了.SMTP(),但仍然没有成功

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)