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

在C#中通过Microsoft Graph识别共享邮箱及转换普通邮箱的方法咨询

识别并转换共享邮箱(C# + Microsoft Graph)

一、识别共享邮箱

共享邮箱在Microsoft Graph中可通过User资源的mailboxSettings.userPurpose属性判断,当该属性值为Shared时即为共享邮箱。共享邮箱通常accountEnabled为false(但并非绝对,核心判断依据是userPurpose)。

修改你的查询代码,指定获取所需属性:

var users = await graphServiceClient.Users.Request()
    .Select("id, displayName, mail, accountEnabled, mailboxSettings/userPurpose")
    .GetAsync();

foreach (var user in users)
{
    bool isSharedMailbox = user.MailboxSettings?.UserPurpose == Microsoft.Graph.UserPurpose.Shared;
    Console.WriteLine($"{user.DisplayName} ({user.Mail}): {(isSharedMailbox ? "共享邮箱" : "普通邮箱")}");
}

二、将普通邮箱转换为共享邮箱

通过Graph的Update User接口,修改目标用户的mailboxSettings.userPurpose为Shared,同时建议将accountEnabled设为false(共享邮箱无需用户登录)。

示例代码:

// 替换为目标用户的ID或邮箱地址
string targetUserId = "user@contoso.com";

var updatedUser = new User
{
    AccountEnabled = false,
    MailboxSettings = new MailboxSettings
    {
        UserPurpose = UserPurpose.Shared
    }
};

await graphServiceClient.Users[targetUserId]
    .Request()
    .UpdateAsync(updatedUser);

三、权限要求

确保你的应用或授权用户拥有以下权限之一(根据授权类型选择):

  • 应用权限:User.ReadWrite.All
  • 委派权限:User.ReadWrite.All 或 Directory.AccessAsUser.All

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:55:21