You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台应用调用Graph API发邮件报错:邮箱状态异常或本地托管

解决Microsoft Graph API发送邮件报错“The mailbox is either inactive, soft-deleted, or is hosted on-premise.”的方案

1. 确认目标邮箱的有效性

  • 检查代码中tenantName对应的邮箱(xx@xx.onmicrosoft.com)是否为活跃的Exchange Online邮箱:
    • 登录Microsoft 365管理中心,进入「用户>活动用户」,找到该用户,确认邮箱已创建、状态正常,未被禁用或软删除。
    • 确保该邮箱不是本地Exchange服务器托管的,客户端凭据流仅支持Exchange Online邮箱。

2. 验证应用权限配置

  • 从权限截图来看,已添加应用权限Mail.Send,需确保:
    • 该权限已获得管理员同意(应用权限必须由全局管理员或Exchange管理员审批,状态显示为「已授予」才会生效)。
    • 不要使用委派权限,客户端凭据流以应用身份运行,仅支持应用权限。

3. 验证用户与邮箱的可访问性

  • 先调用Graph API的GET /users/{tenantName}接口,确认用户存在且邮箱配置正常:
    var user = await graphServiceClient.Users[tenantName].GetAsync();
    Console.WriteLine($"用户邮箱: {user.Mail}, 账户状态: {user.AccountEnabled}");
    
  • 如果用户不存在或账户未启用,需先在Microsoft 365中完成用户与邮箱的创建配置。

4. 确认租户与用户的匹配性

  • 确保代码中的tenantId对应租户,就是tenantName所属的Microsoft 365租户,避免跨租户调用导致的权限异常。

5. 补充邮箱发送权限(可选)

  • 如果租户有安全策略限制,应用可能需要额外的邮箱发送权限:
    • 登录Exchange Online PowerShell,执行以下命令为应用分配SendAs权限:
      Add-RecipientPermission -Identity "xx@xx.onmicrosoft.com" -Trustee "你的Azure应用显示名称" -AccessRights SendAs
      

内容的提问来源于stack exchange,提问作者Bas Nederveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:17:25