Java调用Microsoft Graph API发邮件遇BadRequest,如何指定发件人?
解决Microsoft Graph API发送邮件的BadRequest错误
你遇到的错误是因为用应用权限(ClientSecretCredential)调用了/me端点,这个端点仅支持委托身份验证流(即代表具体用户登录的场景),应用权限下必须明确指定发件人邮箱,不能用/me指代当前用户。
修改方案
直接把代码里的graphClient.me()替换成graphClient.users("你的发件人邮箱地址"),比如发件人是john@contoso.onmicrosoft.com,就改成对应的用户邮箱调用。
修改后的核心代码片段
// 替换原有的graphClient.me()调用部分 graphClient.users("john@contoso.onmicrosoft.com") .sendMail(UserSendMailParameterSet .newBuilder() .withMessage(message) .withSaveToSentItems(null) .build()) .buildRequest() .post();
额外注意事项
- 确保你的Azure AD应用已添加Mail.Send(应用权限),并且完成了管理员同意
- 发件人邮箱必须是当前租户内的有效用户邮箱,不能使用外部邮箱
内容的提问来源于stack exchange,提问作者user18772237
相关产品推荐
相关产品推荐

