You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用令牌实现MailKit的ImapClient对Exchange Online的身份验证?

使用应用身份验证(Bearer令牌)通过MailKit连接Exchange Online IMAP

核心解决方案

Exchange Online的IMAP服务支持XOAuth2认证机制,MailKit提供了对应的SaslMechanismOAuth2类来实现这种认证方式。你需要将已获取的Bearer令牌结合目标邮箱地址,通过该类完成ImapClient的身份验证。

代码示例

替换原有的基本认证代码,使用XOAuth2认证:

using MailKit.Net.Imap;
using MailKit.Security;

using (var imapClient = new ImapClient())
{
    // 连接Exchange Online IMAP服务器
    imapClient.Connect("outlook.office365.com", 993, SecureSocketOptions.SslOnConnect);
    
    // 构建XOAuth2认证机制:第一个参数是要访问的目标邮箱地址,第二个是你的Bearer令牌
    var oauth2Mechanism = new SaslMechanismOAuth2("target-mailbox@yourdomain.com", AccessToken);
    
    // 执行认证
    imapClient.Authenticate(oauth2Mechanism);
    
    // 后续操作:比如访问邮箱文件夹、读取邮件等
    // ...
    
    imapClient.Disconnect(true);
}

关键注意事项

  • 令牌权限要求:
    你需要在Azure AD中为应用程序添加Exchange Online的IMAP.AccessAsApp应用权限,并由管理员授予管理员同意。
  • 令牌受众修正:
    你当前通过Graph API获取的令牌受众是graph.microsoft.com,无法直接用于IMAP认证。需要重新获取受众为https://outlook.office365.com的令牌,请求范围指定为https://outlook.office365.com/IMAP.AccessAsApp。
  • 目标邮箱指定:
    应用身份验证模式下,必须明确指定要访问的目标邮箱地址(即你需要操作的邮箱账号),不能留空或使用应用ID。

内容的提问来源于stack exchange,提问作者MrCalvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:45:16