简体   繁体   English

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

[英]Office365 smtp server does not respond to ehlo() in python

I am trying to use Office365 smtp server for automatically sending out emails.我正在尝试使用 Office365 smtp 服务器自动发送电子邮件。 My code works previously with gmail server, but not the Office365 server in Python using smtplib.我的代码以前适用于 gmail 服务器,但不适用于 Python 中使用 smtplib 的 Office365 服务器。

My code:我的代码:

import smtplib

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

server_365.ehlo()

server_365.starttls()

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

In addition, .starttls() raises a SMTPException: STARTTLS extension not supported by server此外, .starttls() 引发SMTPException: STARTTLS extension not supported by server

Any idea why this happens?知道为什么会这样吗?

The smtplib ehlo function automatically adds the senders host name to the EHLO command, but Office365 requires that the domain be all lowercase, so when youe default host name is uppercase it errors. smtplib ehlo 函数会自动将发件人主机名添加到 EHLO 命令中,但 Office365 要求域全部小写,因此当您默认主机名是大写时会出错。

You can fix by explicitly setting sender host name in the ehlo command to anything lowercase.您可以通过将 ehlo 命令中的发件人主机名显式设置为小写字母来修复。

import smtplib

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

server_365.ehlo('mylowercasehost')

server_365.starttls()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM