使用New-MgUserMessage发邮件遇“Access is denied”的权限问题排查
解决Microsoft Graph发送邮件权限拒绝问题
核心排查点及解决步骤
确认权限类型正确
证书认证属于应用身份,必须配置应用权限类型的Mail.Send,不能使用委派权限。登录Azure AD应用注册的「API权限」页面,检查Mail.Send的权限类型为「应用权限」,且状态显示「已授予管理员同意」。显式指定连接权限范围
连接Graph时,默认可能不会加载所有已授权权限,需明确指定Mail.Send范围:Connect-MgGraph -TenantId $TenantId -ClientId $ClientId -CertificateThumbprint $CertificateThumbprint -Scopes "Mail.Send"执行
Get-MgContext查看当前上下文,确认Scopes列表包含Mail.Send。验证UserId格式有效性
$MsgFrom必须是租户内有效用户的UPN(如user@yourdomain.com)或ObjectId,确保该用户邮箱状态正常。尝试直接发送邮件命令
替换New-MgUserMessage为Send-MgUserMail,直接构造参数发送,避免创建消息环节的权限问题:$sendParams = @{ Message = @{ Subject = $MsgSubject Body = @{ ContentType = "HTML" # 按需改为"Text" Content = $MessageBody } ToRecipients = @( @{ EmailAddress = @{ Address = $EmailRecipient } } ) } SaveToSentItems = $true } Send-MgUserMail -UserId $MsgFrom -BodyParameter $sendParams等待权限生效
管理员同意权限后,可能需要10-15分钟才能同步生效,不要立即测试。
内容的提问来源于stack exchange,提问作者LittlePedro
相关产品推荐
相关产品推荐

