调用Microsoft API移动邮件遇ErrorItemNotFound错误求助
解决邮件移动时ErrorItemNotFound错误的方案
问题说明
拥有Mail.ReadWrite、offline_access、User.Read权限的应用,可正常通过GET /me/messages/获取邮件、GET /me/mailFolders/获取文件夹信息,但执行邮件移动请求时始终返回ErrorItemNotFound错误,请求示例如下:
POST /me/messages/{msg id}/move Content-type: application/json { "destinationId": "junkemail" }
具体解决步骤
必须使用目标文件夹的ID而非名称
系统默认文件夹(如垃圾邮件、已删除)或手动创建的文件夹,都不能直接用名称作为destinationId。需通过GET /me/mailFolders/接口获取目标文件夹的唯一ID,将该ID填入请求体的destinationId字段。验证邮件ID的有效性
先执行GET /me/messages/{msg id}接口,确认该邮件ID对应当前授权用户邮箱中存在的邮件,且未被删除或提前移动。只有能正常返回邮件详情的ID,才能用于后续移动操作。检查权限与接口路径匹配
- 若使用委派权限,接口路径用
/me/messages/{msg id}/move;若使用应用权限,需将路径改为/users/{user id}/messages/{msg id}/move,同时确保Mail.ReadWrite权限已正确配置并授权。 - 解码access token,确认其中包含
Mail.ReadWrite的权限范围。
- 若使用委派权限,接口路径用
规范请求格式
确保请求头Content-Type严格为application/json,请求体JSON语法无错误(无多余逗号、引号闭合正确)。排查邮件特殊状态
避免移动处于同步状态的新邮件、已归档到存档邮箱的邮件,先尝试移动一封已存在一段时间的普通邮件进行测试。
内容的提问来源于stack exchange,提问作者John Balvin Arias
相关产品推荐
相关产品推荐

