【问题标题】:Gmail create draft api returns "MIssing draft message" error in C#Gmail 创建草稿 api 在 C# 中返回“丢失草稿消息”错误
【发布时间】:2017-06-17 20:10:12
【问题描述】:

我已经在所有站点尝试了所有可能的方法和解决方案来解决上述错误。在这方面帮助我。下面是我使用的代码。我已经处理了身份验证部分,因为它可以很好地列出草稿。字符串“iDraftString”是 rfc2822 格式的字符串,包括所有内容,即正文和标题。当我在 gmail 浏览器中使用相同的 Raw64 时,它正在成功创建草稿。所以我不认为格式化字符串有问题。

CreateDraft(string iDraftString)
{   
    string userId = "me@gmail.com";
    string uriString = "https://www.googleapis.com/gmail/v1/users/" + userId + "/drafts";
    Uri oLabelUri = new Uri(uriString);
    HttpWebRequest oSendReq = HttpWebRequest.CreateHttp(oLabelUri);
    oSendReq.Method = "POST";
    oSendReq.Headers["Authorization"] = "Bearer " + accessToken;
    StreamWriter oReqStream = new StreamWriter(oSendReq.GetRequestStream());
    string Raw64 = Base64Encode(iDraftString);
    string json = new JavaScriptSerializer().Serialize( new
    {
        message = new
        {
            raw = Raw64,
            sizeEstimate = Raw64.Length
        }
    });
        oReqStream.Write(json);
        oReqStream.Close();
        var oLabelResponse = (HttpWebResponse)oSendReq.GetResponse();
}

错误响应

{  
   "error":{  
      "errors":[  
         {  
            "domain":"global",
            "reason":"invalid Argument",
            "message":"Missing draft message"
         }
      ],
      "code":400,
      "message":"Missing draft message"
   }
}

【问题讨论】:

  • 我只能通过http请求方式。
  • 您能发布来自 Google 的完整错误消息吗?还有什么理由要手动执行此操作而不使用 Google .Net 客户端库?
  • 那我想你需要看看如何正确发送一个包含看起来不正确的 json 有效负载的 HTTP 帖子
  • 我提到了格式,我想这是正确的格式。仍然没有创建草稿。

标签: c# google-api gmail-api


【解决方案1】:

我终于找到了解决方案。 Http请求的content-type必须设置为“application/json”

oSendReq.​​ContentType = "应用程序/json";

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2017-11-29
    • 2010-11-15
    • 2018-04-19
    • 2019-04-25
    相关资源
    最近更新 更多