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

Graph API技术问题:如何将邮件移动至收件箱子文件夹

解决Graph API移动邮件到收件箱子文件夹失败的问题

问题核心在于Graph API的destinationId参数不支持层级路径格式(如Inbox/processed),自定义子文件夹必须使用其唯一ID作为参数值;而Archive这类系统默认顶级文件夹能直接用显示名称,是因为Graph API对这些内置文件夹提供了别名支持。

解决步骤:

  1. 获取processed子文件夹的ID
    调用Graph API的GET /me/mailFolders/Inbox/childFolders接口,获取收件箱下所有子文件夹的信息,从中找到displayName为processed的文件夹对应的id字段。

    示例PHP CURL代码:

    $ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => 'https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/childFolders',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer '.$access_token.''
        ),
    ));
    $response = curl_exec($ch);
    curl_close($ch);
    $folders = json_decode($response, true);
    // 遍历找到processed文件夹的ID
    $processedFolderId = '';
    foreach($folders['value'] as $folder){
        if($folder['displayName'] === 'processed'){
            $processedFolderId = $folder['id'];
            break;
        }
    }
    
  2. 修改移动邮件的代码
    将destinationId的值替换为上面获取到的processedFolderId:

    $dataar = array("destinationId" => $processedFolderId);
    $postdata = json_encode($dataar);
    $chmove = curl_init();
    curl_setopt_array($chmove, array(
                    CURLOPT_URL => $urlsendgetattidmove,
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_ENCODING => '',
                    CURLOPT_MAXREDIRS => 10,
                    CURLOPT_TIMEOUT => 0,
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                    CURLOPT_CUSTOMREQUEST => 'POST',
                    CURLOPT_POSTFIELDS => $postdata,
                    CURLOPT_HTTPHEADER => array(
                    'Content-Type: application/json',
                     'Authorization: Bearer '.$access_token.''
                   ),
      ));
    $responsemove = curl_exec($chmove);
    curl_close($chmove);
    

补充说明:

  • 系统默认文件夹(如Archive、Drafts、SentItems等)支持用显示名称作为destinationId,是因为Graph API为这些文件夹预设了固定的别名映射;
  • 所有自定义创建的子文件夹,必须通过ID来指定,无法通过层级路径或显示名称直接引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:55:21