Office365 smtp服务器不响应python中的ehlo()

use*_*456 6 python smtp office365

我正在尝试使用Office365 smtp服务器自动发送电子邮件。我的代码以前适用于 gmail 服务器,但不适用于使用 smtplib 的 Python 中的 Office365 服务器。

我的代码:

import smtplib

server_365 = smtplib.SMTP('smtp.office365.com', '587')

server_365.ehlo()

server_365.starttls()
Run Code Online (Sandbox Code Playgroud)

ehlo() 的响应是:(501, '5.5.4 Invalid domain name [DM5PR13CA0034.namprd13.prod.outlook.com]')

此外,.starttls() 引发了SMTPException: STARTTLS extension not supported by server

知道为什么会发生这种情况吗?

小智 1

smtplib ehlo 函数会自动将发件人主机名添加到 EHLO 命令中,但 Office365 要求域全部小写,因此当您的默认主机名是大写时,会出错。

您可以通过在 ehlo 命令中将发件人主机名显式设置为小写字母来修复。

import smtplib

server_365 = smtplib.SMTP('smtp.office365.com', '587')

server_365.ehlo('mylowercasehost')

server_365.starttls()
Run Code Online (Sandbox Code Playgroud)