我有一个公司 Microsoft Exchange 帐户和一个 Python 应用程序。我想通过我的 Python 应用程序使用令牌身份验证从这个帐户发送电子邮件,而不是使用简单的(email_address, password)
.
我已经在我的 Microsoft Azure 门户上注册了我的 Python 应用程序,拥有我的客户端 ID、令牌 ID 和所有内容。已经可以从以下行获取令牌:
import msal
app = msal.ConfidentialClientApplication(
client_id=param_client_id,
client_credential=param_client_credential,
authority=f"https://login.microsoftonline.com/{param_tenant_name}"
)
result = app.acquire_token_for_client(scopes=scopes)
mytoken = result['access_token']
我尝试按照https://docs.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using上的步骤进行操作-oauth#authenticate-connection-requests 编辑我发送到 SMTP 连接的 User_ID,但并没有真正成功。
现在的问题是最好的方法是通过令牌访问我的 Exchange 帐户并发送电子邮件。我想我不能使用该库smtplib
,因为它不支持身份验证(只有我上面提到的我想避免的简单凭据)并且一直拒绝我的连接请求。
请注意,我已经在 Microsoft 365 管理中心-> 用户--> 活动用户-->(我自己)--> 管理电子邮件应用程序上勾选了“经过身份验证的 SMTP”框,并且不应该有任何条件访问策略阻止我自己连接. 所以我想说,这不是权限问题,而是使用更好的 Python 库。或者也许有某种方法可以(email_address, password)
通过令牌更改通过身份验证的访问权限?
提前致谢!任何帮助将非常感激!