Google.Apis.Requests.RequestError 404 gmail api

时间:2017-06-19 11:46:17

标签: c# gmail gmail-api

我正在通过gmail API获取消息以获取完整消息:

   Message msgfull = _gmailService.Users.Messages.Get("me", msg.Id).Execute(); 

我传递了有效的msg.Id

  

Google.GoogleApiException:' Google.Apis.Requests.RequestError

     

未找到[404]

     

未找到Google.Apis.Requests.RequestError [404]错误[     消息[未找到]位置[ - ]原因[notFound]域[全局]]

还有这个问题here

有人遇到过这个吗?

1 个答案:

答案 0 :(得分:0)

这是"按设计"根据文档,历史ID按时间顺序增加,但与有效ID之间的随机间隙不相邻。

  

这不是API中的错误,并记录在   https://developers.google.com/gmail/api/v1/reference/users/history/list

查看更多here

所以,如果您正在执行以下步骤:

  1. 在第一步中获取historyIds通过历史API(及其消息ID )在7天之前发起的这些消息中,然后历史记录结果可能包含不同步,包括附加的消息ID和历史ids。
  2. 然后尝试使用历史记录提取中的消息ID。
  3. 一种可能的解决方案是仅通过调用users.messages.list(" me")来获取消息的消息ID,而不是依赖于历史记录查询

    无论如何,这看起来像是Google API方面的一个错误,导致用户无法依赖过去1周以上的历史记录结果。

      

    更多信息:返回指定的startHistoryId之后的历史记录。   提供的startHistoryId应该从a的historyId获得   消息,线程或以前的列表响应。历史ID增加   按时间顺序但不与其间的随机间隙相邻   有效身份证件提供无效或过期的startHistoryId   通常返回HTTP 404错误代码。历史记录通常是   有效期至少一周,但在某些罕见情况下可能有效   只有几个小时。如果您收到HTTP 404错误响应,则表示您的错误   应用程序应执行完全同步。如果你没有收到   响应中的nextPageToken,没有要检索的更新和   您可以将返回的historyId存储为将来的请求。