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

求助:使用Microsoft Graph API 6.1.0批量更新邮件isRead属性

批量更新多封邮件的isRead属性(Microsoft Graph API 6.1.0)

可以通过Microsoft Graph的批量请求功能,将多个邮件更新操作打包到单次网络请求中完成。以下是适配6.1.0版本SDK的实现代码:

实现步骤与代码

首先导入必要的依赖类:

import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.BatchRequestContent;
import com.microsoft.graph.models.BatchRequestStep;
import com.microsoft.graph.http.BatchResponseContent;
import java.util.List;
import java.util.UUID;

编写批量更新的方法:

// 批量将指定邮件标记为已读
public void batchMarkMessagesAsRead(String userId, List<String> messageIds) {
    try {
        // 初始化批量请求容器
        BatchRequestContent batchContent = new BatchRequestContent();

        // 为每个邮件ID创建单独的更新请求步骤
        for (String msgId : messageIds) {
            // 构造更新对象,设置isRead为true
            Message updatePayload = new Message();
            updatePayload.setIsRead(true);

            // 生成唯一请求ID,创建patch请求步骤
            String requestId = UUID.randomUUID().toString();
            BatchRequestStep updateStep = new BatchRequestStep(
                requestId,
                graphServiceClient.users().byUserId(userId).messages().byMessageId(msgId).buildPatchRequest(updatePayload)
            );
            batchContent.addBatchRequestStep(updateStep);
        }

        // 发送批量请求
        BatchResponseContent batchResponse = graphServiceClient.batch().post(batchContent);

        // 验证每个请求的执行结果(可选)
        for (String reqId : batchContent.getRequestIds()) {
            int index = batchContent.getRequestIds().indexOf(reqId);
            String targetMsgId = messageIds.get(index);
            if (batchResponse.getResponseById(reqId).isSuccessStatusCode()) {
                System.out.println("邮件 [" + targetMsgId + "] 已成功标记为已读");
            } else {
                System.out.println("邮件 [" + targetMsgId + "] 更新失败,状态码:" + batchResponse.getResponseById(reqId).getStatusCode());
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

调用示例

// 准备需要更新的邮件ID列表
List<String> targetMessageIds = List.of("邮件ID1", "邮件ID2", "邮件ID3");
// 执行批量更新
batchMarkMessagesAsRead(user_id, targetMessageIds);

注意事项

  • 单个批量请求最多支持20个操作,如果需要更新的邮件数量超过20,需要拆分多个批次执行
  • 确保你的应用已获取Mail.ReadWrite权限,否则会出现权限不足的错误
  • 若不需要验证结果,可以省略响应处理的代码块,减少不必要的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:25:10