使用Microsoft Graph API发送草稿邮件遇收件人无效错误求助
排查思路
核对
sendMail请求体结构
确保请求体正确引用草稿ID,格式应为:{ "message": { "id": "<草稿ID>" }, "saveToSentItems": true }不要额外重复填写
toRecipients,避免格式冲突;同时确认草稿ID无误,未出现拼写错误。检查用户ID与授权上下文的一致性
你通过/me/messages保存的草稿属于当前授权用户的邮箱,若调用/users/{user-id}/sendMail时,user-id与当前授权用户ID不一致,会因权限问题无法正确读取草稿的收件人信息,导致报错。建议改为使用/me/sendMail端点发送当前用户的草稿;若需发送其他用户的草稿,需确保当前授权用户拥有该用户邮箱的访问权限(如共享邮箱权限),且应用已配置Mail.ReadWrite.Shared等对应权限。验证草稿的实际收件人状态
调用GET /me/messages/<草稿ID>接口,再次确认草稿的toRecipients字段是否包含完整且有效的邮箱地址(格式如{"emailAddress":{"address":"xxx@domain.com","name":"xxx"}}),排除草稿保存后被意外修改、收件人地址格式错误等情况。核对权限配置
IMAP.AccessAsUser.All是IMAP协议权限,与Graph API的sendMail操作无关,重点确认:- 应用已获得
Mail.Send或Mail.Send.Shared的委托权限(根据场景选择) - 权限已完成管理员同意(若需要)
- 当前授权用户的邮箱未被限制发送邮件的权限
- 应用已获得
排查端点使用场景
委托权限模式下,/users/{user-id}端点通常用于管理员代表其他用户操作,若你是普通用户授权,使用该端点可能导致上下文异常,优先使用/me系列端点操作当前用户的邮件资源。
内容的提问来源于stack exchange,提问作者nilesh
相关产品推荐
相关产品推荐

