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

基于.NET 6使用Microsoft Graph 5.15通过邮件ID获取邮件的技术咨询

直接通过邮件ID使用Microsoft Graph检索邮件(.NET 6)

核心方案说明

Microsoft Graph支持直接通过邮件ID获取邮件,无需限定/me或特定用户路径,只要应用拥有对应权限且使用正确的邮件ID格式即可实现。

1. 配置所需权限

根据你的服务场景选择对应权限:

  • 委派权限:Mail.Read(针对单个用户邮箱的读取权限)
  • 应用权限:Mail.Read.All(跨邮箱读取权限,适合服务端后台场景)

2. .NET 6代码实现

先安装Microsoft.Graph和Azure.Identity NuGet包,然后使用以下代码发起请求:

using Microsoft.Graph;
using Azure.Identity;

// 配置应用身份信息
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "你的租户ID";
var clientId = "你的应用注册ID";
var clientSecret = "你的应用密钥";

// 初始化Graph客户端(客户端凭据模式,适用于服务端无用户交互场景)
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(credential, scopes);

try
{
    // 替换为实际的邮件ID
    string targetMessageId = "AAMkAGxxxxxx...";
    // 按需选择需要返回的字段,减少响应体积
    var message = await graphClient.Messages[targetMessageId]
        .Request()
        .Select(m => new {
            m.Subject,
            m.Body,
            m.From,
            m.ReceivedDateTime
        })
        .GetAsync();

    // 处理获取到的邮件数据
    Console.WriteLine($"邮件主题:{message.Subject}");
    Console.WriteLine($"收件时间:{message.ReceivedDateTime}");
}
catch (ServiceException ex)
{
    Console.WriteLine($"请求失败:{ex.Message}");
}

3. EWS邮件ID的兼容处理

如果你的邮件ID来自本地Exchange的EWS服务,需要先转换为Microsoft Graph兼容的格式:

// EWS格式ID转Graph格式ID
string ewsMessageId = "你的EWS邮件ID";
string graphMessageId = Microsoft.Graph.ConvertIdHelper.ConvertToGraphId(ewsMessageId, "ewsId", "restId");

关键注意事项

  • 应用需在Azure AD中完成权限配置,应用权限场景需要管理员完成权限同意。
  • 若使用EWS来源的ID必须转换,否则会返回404未找到错误。
  • 始终使用Select方法指定所需字段,避免请求冗余数据,提升接口性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:01