Office365 smtp 服务器不响应python中的ehlo() [英] Office365 smtp server does not respond to ehlo() in python

查看:132
本文介绍了Office365 smtp 服务器不响应python中的ehlo()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to use Office365 smtp server for automatically sending out emails. My code works previously with gmail server, but not the Office365 server in Python using smtplib.

我的代码:

import smtplib

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

server_365.ehlo()

server_365.starttls()

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

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

此外,.starttls() 会引发 SMTPException: STARTTLS 扩展不受服务器支持

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

知道为什么会这样吗?

推荐答案

smtplib ehlo 函数会自动将发件人主机名添加到 EHLO 命令中,但是 Office365 要求域全部小写,所以当你默认主机名是大写时错误.

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.

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

You can fix by explicitly setting sender host name in the ehlo command to anything lowercase.

import smtplib

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

server_365.ehlo('mylowercasehost')

server_365.starttls()

这篇关于Office365 smtp 服务器不响应python中的ehlo()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆