Interop.Outlook / UiPath-是否可以通过异步方式发送电子邮件?

时间:2019-11-22 10:49:53

标签: c# outlook interop uipath

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

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

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

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

UiPath自定义活动应该从CodeActivity继承或派生,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活动正在做,我想复制。

非常感谢您。

亲切的问候,

1 个答案:

答案 0 :(得分:0)

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

How to invoke async activity in UIPath