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

如何创建Aspose IGraphClient以代表用户从Microsoft Graph获取邮件?

如何使用Aspose.Email的IGraphClient实现代表用户访问Microsoft Graph获取邮件

核心差异说明

你之前创建的GraphServiceClient采用的是客户端凭据流(应用权限),而代表用户访问需要使用委派权限流(比如授权码流、用户名密码流),Aspose的IGraphClient依赖委派权限生成的访问令牌来构建实例。

步骤1:配置Azure AD应用的委派权限

先确保你的Azure AD应用已添加并完成以下委派权限的授权:

  • Mail.Read(读取邮件所需)
  • Mail.ReadWrite(如需修改邮件)

步骤2:获取委派权限的访问令牌

使用Microsoft Identity Client库获取符合要求的令牌,以下是两种常见场景的实现:

场景1:交互式授权码流(适合桌面/Web应用)

using Microsoft.Identity.Client;

var tenantId = "你的租户ID";
var clientId = "你的客户端ID";
var redirectUri = "https://localhost:你的端口/redirect"; // 需在Azure AD应用中预先配置
var scopes = new[] { "https://graph.microsoft.com/Mail.Read" };

var pca = PublicClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantId)
    .WithRedirectUri(redirectUri)
    .Build();

// 触发用户登录并获取令牌
var authResult = await pca.AcquireTokenInteractive(scopes).ExecuteAsync();
var accessToken = authResult.AccessToken;

场景2:用户名密码流(仅用于测试,不推荐生产环境)

using Microsoft.Identity.Client;

var tenantId = "你的租户ID";
var clientId = "你的客户端ID";
var scopes = new[] { "https://graph.microsoft.com/Mail.Read" };
var userEmail = "目标用户邮箱";
var userPassword = "目标用户密码";

var pca = PublicClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantId)
    .Build();

var authResult = await pca.AcquireTokenByUsernamePassword(scopes, userEmail, userPassword).ExecuteAsync();
var accessToken = authResult.AccessToken;

步骤3:创建Aspose.Email的IGraphClient实例

用获取到的委派权限令牌初始化GraphClient(实现IGraphClient接口):

using Aspose.Email.Clients.Graph;

// 构建IGraphClient实例
var graphClient = new GraphClient(accessToken);
// 可选:设置租户ID,用于部分需要租户上下文的操作
graphClient.TenantId = tenantId;

// 示例:读取用户收件箱邮件
var inboxMessages = await graphClient.ListMessagesAsync("Inbox");
foreach (var message in inboxMessages)
{
    Console.WriteLine($"邮件主题:{message.Subject}");
}

关键注意事项

  • 授权码流需要用户完成交互式登录,是生产环境的推荐方案;用户名密码流存在安全风险,仅用于测试场景。
  • 访问令牌有有效期,过期后需要重新获取,Aspose的GraphClient不会自动刷新令牌,需自行实现令牌刷新逻辑。
  • 授权码流必须确保Azure AD应用中配置的重定向URI与代码中的一致,否则会导致授权失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:01:28