如何发送 POST 请求到 outlook 365 API 到 ReplyAll

How to send POST request to outlook 365 API to ReplyAll

我正在尝试使用 Outlook 365 回复所有电子邮件 API。正在关注 this tutorial。根据 ReplyAll 的教程,我们只需要输入 Commnet 但是当我尝试这样做时,它给出了 Bad Request 错误 -

"error": {
    "code": "ErrorInvalidRecipients",
    "message": "At least one recipient isn't valid., A message can't be sent because it contains no recipients."
}

我正在尝试使用以下方法执行此操作。

public string EmailReplyAll(AuthenticationResult result, string uriString, string msgBody)
{
 HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uriString);
 request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
 EmailReplyAll replyAll = new EmailReplyAll();
 replyAll.MsgBody = msgBody;
 var jsonData = JsonConvert.SerializeObject(msgBody);
 var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
 HttpResponseMessage response = httpClient.PostAsync(request.ToString(),content).Result;
 if (!response.IsSuccessStatusCode)
            throw new WebException(response.StatusCode.ToString() + ": " + response.ReasonPhrase);
 uriString = response.Content.ReadAsStringAsync().Result;
 return uriString;
}

谁能指出我哪里做错了。我正在用 WPF 尝试这个。

这是我想出并为我工作的。

EmailReplyAll class

public class EmailReplyAll
{
    public string Comment { get; set; }
}

URI字符串-

var uriString = String.Format(CultureInfo.InvariantCulture, "{0}api/{1}/me/messages/{2}/replyall", graphApiEndpoint, graphApiVersion, emailId); //emailId is id of email e.g - AAMkADBjMGZiZGFACAAC8Emr9AAA=

EmailReplyAll 方法 -

public string EmailReplyAll(AuthenticationResult result, string uriString, string msgBody)
 {
  httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
  EmailReplyAll replyAll = new EmailReplyAll();
  replyAll.Comment = msgBody;
  var jsonData = JsonConvert.SerializeObject(replyAll);
  var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
  try
   {
    HttpResponseMessage response = httpClient.PostAsync(uriString, content).Result;
    var apiResult = response.Content.ReadAsStringAsync().Result;
   }
   catch (Exception exception)
    {
     return "Error";
    }       
     return apiResult;
 }