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

在C#插件中获取Outlook用户头像的方法咨询

获取Outlook用户头像(通过CRMServiceClient)

可以通过CRMServiceClient获取用户头像,用户头像实际存储在systemuser实体的EntityImage属性中(二进制类型),这个属性不会在常规字段列表中直接显示,需要专门查询。

实现步骤与代码示例

  • 初始化CRMServiceClient连接后,通过Retrieve方法查询systemuser实体,并指定获取entityimage(二进制图片数据)和entityimage_url(图片访问URL)属性:
// 替换为你的CRM连接字符串
string connectionString = "AuthType=OAuth;Url=https://your-org.crm.dynamics.com;Username=user@org.onmicrosoft.com;Password=your-password;AppId=your-app-id;RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;";

var serviceClient = new CRMServiceClient(connectionString);

if (serviceClient.IsReady)
{
    // 替换为目标用户的ID
    Guid targetUserId = new Guid("xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
    ColumnSet columns = new ColumnSet("entityimage", "entityimage_url");
    
    var systemUser = serviceClient.Retrieve("systemuser", targetUserId, columns);

    // 方式1:获取二进制图片数据
    if (systemUser.Contains("entityimage"))
    {
        byte[] avatarData = systemUser.GetAttributeValue<byte[]>("entityimage");
        // 将字节数组保存为图片文件
        File.WriteAllBytes(@"C:\temp\user-avatar.png", avatarData);
    }

    // 方式2:通过图片URL获取(系统自动生成的CDN地址)
    if (systemUser.Contains("entityimage_url"))
    {
        string avatarUrl = systemUser.GetAttributeValue<string>("entityimage_url");
        // 使用HttpClient下载图片
        using (HttpClient client = new HttpClient())
        {
            byte[] avatarData = await client.GetByteArrayAsync(avatarUrl);
            File.WriteAllBytes(@"C:\temp\user-avatar-from-url.png", avatarData);
        }
    }
}

注意事项

  • 确保当前CRM账号拥有读取systemuser实体EntityImage属性的权限。
  • 如果用户未设置头像,entityimage和entityimage_url属性不会存在,需先通过Contains方法判断属性是否存在。
  • entityimage_url是只读属性,由系统自动生成,仅当用户上传头像后才会生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:33:14