import smtplib
smtpObj = smtplib.SMTP('smtp.office365.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('xxx@gmail.com', ' abcde')
smtpObj.sendmail('xxx@gmail.com', 'yyyy@outlook.com', 'Subject: So long.\nDear Alice, so long and thanks for all the fish. Sincerely, Bob')
{}
smtpObj.close()
Run Code Online (Sandbox Code Playgroud)
我得到的错误
SMTPAuthenticationError: (535, b'5.7.3 Authentication unsuccessful [BM1PR01CA0150.INDPRD01.PROD.OUTLOOK.COM]').
Run Code Online (Sandbox Code Playgroud)
很可能是您的 Exchange Online 组织中禁用了经过身份验证的 SMTP(SMTP AUTH 协议)。
可以在组织级别或每个邮箱上启用/禁用 SMTP AUTH。由于 SMTP AUTH 仅使用基本身份验证,因此 Microsoft 建议在组织级别禁用它,仅对仍然需要它的个人帐户启用它。
如果在组织中启用了安全默认值,则禁用 SMTP AUTH。
可以在 Microsoft 365 管理中心或使用 Exchange Online Powershell 启用 SMTP AUTH。
为简单起见,为单个帐户启用 SMTP AUTH:
之后,您应该能够使用相应的帐户进行身份验证。
重要提示:您需要 Office 365 组织的管理员权限才能执行此操作。否则,请向您的 O365 组织管理员寻求帮助。
更多详情:https : //docs.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission