Microsoft Graph createReply不添加内容

时间:2017-01-04 16:35:34

标签: office365 microsoft-graph

我正在编写一个asp.net c#应用程序来调用microsoft graph api以回复和发送电子邮件,但是/ me / messages / {id} / createReply api调用中似乎有一个错误。 该文档指出该内容需要一个“comment”属性,该属性作为唯一内容添加到消息回复草稿中。它没有。

我已经使用实际代码进行了测试,并使用Microsoft Graph Explorer手动创建请求,每次忽略comment属性时,都会创建仅包含原始邮件中引用文本的草稿回复。文档是否完全不正确?

如果完全省略comment属性,则不会抛出任何错误,表明甚至缺少必需的属性。

1 个答案:

答案 0 :(得分:1)

我在这个问题上挣扎了好几个小时。图谱API真的很模糊。无论如何我以这种方式解决了这个问题。这是PHP,但我确信没有区别,概念是一样的。

第1步:使用createReply API创建草稿。你应该记住,请求没有正文。所以你只是创建一个简单的草稿,没有任何内容或附件或你自己的任何东西。

$graph = new Graph();
    $graph->setAccessToken($token);

    try {
        $draftedMessage = $graph->createRequest("POST", "/me/messages/{$id}/createReply")
            ->setReturnType(Model\Message::class)
            ->execute();

第2步:接下来,您应该使用回复内容和/或附件更新您的草稿电子邮件。

$body = $draftedMessage->getBody()->getContent();
        $updatedBodyContent = $comment . '\n' . $body;
        $itemBody = new Model\ItemBody();
        $contentType = new Model\BodyType(Model\BodyType::HTML);
        $itemBody->setContentType($contentType);
        $itemBody->setContent($updatedBodyContent);
        $draftedMessage->setBody($itemBody);

        $updatedMessage = $graph->createRequest("PATCH", "/me/messages/{$draftedMessage->getId()}")
            ->attachBody($draftedMessage)
            ->execute();
    } catch(RequestException $e){
        return response()->json(['status' => false, 'message' => $e->getMessage()]);
    }

在同时创建草稿时无法添加内容。也许你应该调用异步来避免用户端的延迟。如果您遇到任何问题,请告诉我。