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

如何验证通过Microsoft Graph下载的消息的文件完整性?

验证Microsoft Graph消息下载完整性的方案

Microsoft Graph的邮件(Message)资源本身没有内置的哈希属性(类似DriveItem的file.hashes字段)用于直接验证下载完整性,但可以通过以下两种替代方案实现验证需求:

方案一:利用消息的唯一标识符与ETag

  • 下载前先获取目标消息的id和etag元数据,下载完成后重新调用API获取消息的对应字段做对比:
    • id是消息的全局唯一标识,确保下载的是目标对象
    • etag用于标记消息版本,若下载过程中消息未被修改,两次获取的etag应完全匹配
  • .NET SDK示例代码:
    // 下载前获取消息元数据
    var originalMsg = await graphClient.Me.Messages["target-message-id"].Request().GetAsync();
    var originalEtag = originalMsg.Etag;
    
    // 下载消息内容
    var msgContent = await graphClient.Me.Messages["target-message-id"].Content.Request().GetAsync();
    
    // 验证消息版本未变更
    var verifiedMsg = await graphClient.Me.Messages["target-message-id"].Request().GetAsync();
    if (verifiedMsg.Etag != originalEtag)
    {
        // 消息已被修改,下载内容可能存在不一致
    }
    

方案二:自定义计算并存储内容哈希

如果需要更严格的完整性校验,可以自行实现哈希验证逻辑:

  1. 首次获取消息时,计算消息完整内容(包括正文、附件等)的哈希值(如SHA256)
  2. 将哈希值与消息id关联存储(例如存入本地数据库)
  3. 后续下载消息后,重新计算本地内容的哈希,与存储值对比
  • 注意:此方式需自行维护哈希存储,且要区分“传输损坏”和“消息本身被编辑更新”两种场景

补充说明

邮件消息的传输过程本身由HTTP协议的传输层(如TCP校验和)保障完整性,但如果需要应用层的额外验证,上述两种方案是可行的替代方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:02:19