使用 python 语言从 Outlook 发送邮件时出现 SMTP 身份验证错误

Nan*_*ndu 3 python email

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)

wom*_*ire 7

很可能是您的 Exchange Online 组织中禁用了经过身份验证的 SMTP(SMTP AUTH 协议)。

可以在组织级别或每个邮箱上启用/禁用 SMTP AUTH。由于 SMTP AUTH 仅使用基本身份验证,因此 Microsoft 建议在组织级别禁用它,仅对仍然需要它的个人帐户启用它。

如果在组织中启用了安全默认值,则禁用 SMTP AUTH。

可以在 Microsoft 365 管理中心或使用 Exchange Online Powershell 启用 SMTP AUTH。

为简单起见,为单个帐户启用 SMTP AUTH:

  1. 转到 Microsoft 365 管理中心 ( https://admin.microsoft.com/ ) >用户>活动用户
  2. 选择您要从中发送电子邮件的用户,然后转到“邮件”选项卡。
  3. 电子邮件应用程序部分中单击管理电子邮件应用程序
  4. 启用Authenticated SMTP并单击Save changes

之后,您应该能够使用相应的帐户进行身份验证。

重要提示:您需要 Office 365 组织的管理员权限才能执行此操作。否则,请向您的 O365 组织管理员寻求帮助。

更多详情:https : //docs.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission