【问题标题】:Interop.Outlook / UiPath - Is there a way to send an email in an asynchronous way?Interop.Outlook / UiPath - 有没有办法以异步方式发送电子邮件?
【发布时间】:2019-11-22 10:49:53
【问题描述】:

我为 UiPath 开发了一些自定义活动,其中一些用于发送具有一些自定义行为的电子邮件(更改电子邮件的回复收件人,获取所有线程并重新发送...)

问题是,在我们遇到 Outlook 上的安全窗口之前,它没有任何问题,您应该按下“允许”以继续从中发送或接收电子邮件。

此弹出窗口实际上会阻止任何与电子邮件 Outlook 相关的活动(也来自 UiPath)。实际上,我们使用 UiPath 活动的并行活动对其进行了整理。

对于自定义活动,情况有所不同,因为 Interop 的 Send 方法会锁定 CPU/线程/任何东西,不允许并行活动完成其工作。

UiPath自定义activity应该继承或派生自CodeActivity,是同步的,所以我使用了AsyncCodeActivity的实现

protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)

protected override void EndExecute(AsyncCodeActivityContext context, IAsyncResult result)

在 BeginExecute 我有我的 Send 方法,它仍然会阻塞进程。 是的,我已经破解了返回与流程本身无关的内容。

bool returnValue = 2 > 1;
Func<int, int, bool> func = (x, y) => x > y;
return func.BeginInvoke(2, 1, callback, state);

如您所见,我并没有真正使用异步或线程相关的编码。 那么,任何人都可以帮助我如何以异步方式发送电子邮件(来自 Outlook,而不是 SMTP 或任何相关的)?似乎 UiPath 活动正在这样做,我想复制。

非常感谢。

亲切的问候,

【问题讨论】:

  • 如何让它成为一个单独的工作流并在执行主要工作流时从 Orchestrator 队列中调用?
  • 你的意思是在同一台机器上运行 2 个机器人?这是可能的,但如果我没记错的话,我们的基础设施不允许。
  • 可以,但不能同时运行。如果在这个过程中不是绝对必须在那个时候发送电子邮件,您也许可以在主机器人之后运行另一个邮件发送机器人?

标签: c# outlook interop uipath


【解决方案1】:

您是否查看过@wolfgang-radl 的这个异步答案?

How to invoke async activity in UIPath

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2013-10-19
    • 2021-06-12
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多