@wombatonfire 给出了一个很棒的答案,但如果由于任何原因这些步骤不可行(就像我的情况一样),以下方法解决了我的问题。
我使用的是 Mac。无法进入管理员中心。必须使用 PowerShell。
此外,在我的 Mac 上,PowerShell 必须连接到 MSFT 交换服务器,然后才能更改我的邮箱设置。以下内容使电子邮件按设计工作。
要使所有这些工作正常运行,需要跨越一个关键障碍。
要将您的 Mac 连接到 MSFT Exchange 服务器,您的 Mac 必须使用来自/通过 OpenSSL1.0 的 TLS1.2。OpenSSL1.1 不行。
在您的 Mac 上获取终端窗口:
Click LaunchPad, type "term", click Terminal
在终端窗口中,检查您的 Mac 上有哪些 OpenSSL 版本:
>ls -al /usr/local/Cellar/openssl*
查看当前正在使用的版本:
>openssl version -a
OpenSSL 1.1.* 不好。
OpenSSL 1.0.* 很好。
通常,你可以使用brew来切换包的版本:
>brew switch openssl 1.0.2s
>brew link --overwrite openssl
但是我遇到了这个错误:警告:拒绝链接 macOS 提供/遮蔽的软件:openssl。
所以我不得不想办法解决。
更改 PATH 环境变量(仅在此终端会话中,而非永久性更改)。
>PATH=/usr/local/Cellar/openssl/1.0.2s/bin:$PATH
现在检查,显示良好版本:
>openssl version -a
接下来,我按照此处记录的步骤安装了 PowerShell:
https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-7
现在,以管理员身份打开 PowerShell。
>sudo su - root
<your mac password>
root>pwsh
在 PowerShell 提示符处,仔细检查您的 PowerShell 版本。需要版本 7。
>$host.version
我有:7.0.3修订版-1
检查PowerShell中安装了哪些模块:
>Get-Module -ListAvailable
如果未列出“PowerShellGet”,请安装它:
>Install-Module -Name PowerShellGet -Force
这一步对于在 Mac 上成功非常关键。只有最新的“预览版本2.0.4”的“ExchangeOnlineManagement”软件包才能在 Mac 上运行。
我不知道是否需要,但我使用以下命令卸载了“ExchangeOnlineManagement”软件包的发布版本:
>Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 2.0.3
如果预览版本不存在,请安装它:
>Install-Module -Name ExchangeOnlineManagement -AllowPrerelease -Force
还有最后一个细节需要注意。告诉PowerShell您想要“ExchangeOnlineManagement”包使用哪个版本的TLS:
>[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
最后,是时候连接到母舰了:
(在 Mac 上比 Windows 更棘手,可能需要更多技巧)。
>Connect-ExchangeOnline -UserPrincipalName youremail@yourdomain
上述命令将尝试打开一个特殊的身份验证页面。至少在我的 Mac 上,它无法打开。因此:
COPY the giant link that gets displayed in the powershell window
PASTE the giant link into a web browser (I used Safari).
在浏览器页面上输入您的Exchange凭据后,您的PowerShell将显示一个进度条,然后神奇地连接到MSFT Exchange服务器!
设置您想要使用的邮箱的SMTP设置的最后一步:
Set-CASMailbox -Identity youremail@yourdomain -SmtpClientAuthenticationDisabled $false
最后,显然总是要明确断开连接(在关闭终端窗口之前)是很重要的。
>Disconnect-ExchangeOnline
这就是比赛结束的时候了。您需要将“disabled”设置为false,以便从每个/任何/所有邮箱发送电子邮件。
现在,您可以使用完全记录的、经常重复的Python代码(如OP中所示)通过SMTP和TLS发送电子邮件,直到其他问题再次出现。
祝您愉快!