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

能否在UiPath中创建自定义GraphServiceClient?如何实现?

在UiPath里自定义Microsoft Graph连接实现Office 365扩展功能

问题背景

UiPath自带的Office 365包搞不定标记邮件已读/未读、修改共享邮箱邮件主题这类操作,尝试用Microsoft Graph的代码实现时,UiPath一直报错说需要netstandard 2.0.0.0程序集,还没法直接把这个程序集加到项目里。下面是解决这个问题的实操方案:

解决步骤

1. 制作自定义NuGet包封装Graph操作

  • 本地新建一个.NET类库项目,目标框架选.NET Framework 4.6.2或更高(UiPath兼容的版本即可)
  • 安装NuGet包:Microsoft.Graph、Microsoft.Graph.Auth、Microsoft.Identity.Client,选兼容.NET Framework的版本(比如Microsoft.Graph v4.x及以上)
  • 编写封装Graph邮件操作的代码:
using Microsoft.Graph;
using Microsoft.Identity.Client;
using System.Threading.Tasks;

public class GraphMailTools
{
    private readonly GraphServiceClient _graphClient;

    public GraphMailTools(string clientId, string tenantId, string clientSecret)
    {
        var clientApp = ConfidentialClientApplicationBuilder
            .Create(clientId)
            .WithTenantId(tenantId)
            .WithClientSecret(clientSecret)
            .Build();

        var authProvider = new ClientCredentialProvider(clientApp);
        _graphClient = new GraphServiceClient(authProvider);
    }

    // 标记共享邮箱邮件为已读
    public async Task MarkMailRead(string mailId, string sharedMailbox)
    {
        await _graphClient.Users[sharedMailbox].Messages[mailId]
            .Request()
            .UpdateAsync(new Message { IsRead = true });
    }

    // 修改共享邮箱邮件主题
    public async Task UpdateMailSubject(string mailId, string sharedMailbox, string newSubject)
    {
        await _graphClient.Users[sharedMailbox].Messages[mailId]
            .Request()
            .UpdateAsync(new Message { Subject = newSubject });
    }
}
  • 将类库打包成NuGet包(.nupkg),然后在UiPath Studio中导入:管理包 > 本地 > 浏览选择打包好的文件

2. 在UiPath流程中调用自定义工具类

  • 拖拽Invoke Code活动到流程中,引用自定义类
  • 使用VB.NET编写调用代码(UiPath默认语言),记得勾选异步代码选项:
Dim mailTools As New GraphMailTools("你的ClientID", "你的租户ID", "你的客户端密钥")
Await mailTools.MarkMailRead("目标邮件ID", "共享邮箱地址@xxx.com")
  • 需在Invoke Code的属性 > 导入中添加自定义类的命名空间,避免类找不到的报错

3. 解决netstandard依赖冲突

UiPath基于.NET Framework,直接引用.NET Standard库易出现版本冲突,可按以下方式处理:

  • 自定义类库选择的NuGet包需确保兼容.NET Framework,避免使用仅支持.NET Standard的版本
  • 若仍存在冲突,手动修改UiPath项目中的packages.config,添加绑定重定向:
<dependentAssembly>
    <assemblyIdentity name="netstandard" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>

4. 配置Azure AD应用权限

在Azure AD中注册应用,添加以下应用权限(需管理员完成权限同意):

  • Mail.ReadWrite(针对共享邮箱的读写权限)
  • 确保注册的应用已获得目标共享邮箱的访问权限,必要时在Azure中为应用分配邮箱权限

测试验证

先在本地测试自定义类库的功能,确保能正常调用Graph API修改邮件状态,再放到UiPath流程中运行,检查共享邮箱内的邮件是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:45:40