相关疑难解决方法(0)

如何使用 MailKit 中的 OAuth 2.0 连接到 Exchange Online?

我有一个 Web 应用程序,它使用 MailKit 和基本身份验证通过 Exchange Online (Office365) 向用户发送电子邮件。我们公司是 MS 合作伙伴,因此有义务在 2020 年 2 月底之前关闭我们服务的基本身份验证。

因此,我想使用 OAuth 2.0 连接到 Exchange Online,类似于此示例。事实上,根据这个答案可能有一个解决方案,但我找不到任何相关信息。

现在我正在使用 MS Identity Platform v2.0,但我不知道该怎么做。

任何帮助将不胜感激。

更新1

我不想代表登录用户发送邮件,而是有一个 Office365 用户帐户用于向其他人发送邮件(通知等)。

更新2

我设法使用 Microsoft Graph SDK 和Username/Password Provider更接近我想要做的事情。

我们的用户帐户需要多因素身份验证,因此在使用用户密码时出现错误,因为我无法满足第二个因素。当我使用应用程序密码时,由于密码不正确,身份验证失败。

更新3

我现在改用邮件转发。但如果我能找到答案,我会更新这个问题。

oauth-2.0 mailkit microsoft-identity-platform microsoft-graph-api

9
推荐指数
1
解决办法
1万
查看次数

用于 IMAP 和 SMTP 身份验证的 Office 365 XOAUTH2 失败

最近宣布支持 Exchange Online 中的 IMAP 和 SMTP 的 OAuth 2.0。按照指南,我设置了应用程序权限以及 IMAP 和 SMTP 连接。应用程序配置为Accounts in any organizational directory (Any Azure AD directory - Multitenant)并使用授权代码流

以下 URL 用于授权:

并且添加了以下委派 Microsoft Graph 范围:

在此处输入图片说明

范围,来自代码的请求:

final List<String> scopes = Arrays.asList(
    "offline_access",
    "email",
    "openid",
    "profile",
    "User.Read",
    "Mail.ReadWrite",
    "https%3A%2F%2Foutlook.office365.com%2FIMAP.AccessAsUser.All",
    "https%3A%2F%2Foutlook.office365.com%2FSMTP.Send"
);
Run Code Online (Sandbox Code Playgroud)

我成功收到访问和刷新令牌:

{
    "token_type": "Bearer",
    "scope": "email IMAP.AccessAsUser.All Mail.ReadWrite openid profile SMTP.Send User.Read",
    "expires_in": 3599,
    "ext_expires_in": 3599,
    "access_token": "edited",
    "refresh_token": "edited",
    "id_token": "edited"
}
Run Code Online (Sandbox Code Playgroud)

这是用于连接到 …

java imap smtp oauth-2.0 office365

6
推荐指数
1
解决办法
6745
查看次数