C# - 从outlook

时间:2017-12-17 07:33:30

标签: c# email outlook scheduled-tasks

我有一个从Outlook发送电子邮件的C#exe,如果手动运行,它可以正常工作。

我正在尝试通过任务计划程序运行它,但它出现以下错误:

System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
at sendMail.Program.Main(String[] args) in D:\Recovered\Root\Projects\sendMail\sendMail\Program.cs:line 20

3 个答案:

答案 0 :(得分:1)

我找到了一个黑客。我可以修复异常,但它正在发送电子邮件,因为Microsoft不允许COM对象通过服务运行(在我的案例中是Task Scheduler)。

我根据需要每隔几个小时创建一个脚本并触发命令,因为它是作为程序而不是服务运行的,它工作正常,唯一的缺点是从我的脚本调用的睡眠调用。

答案 1 :(得分:0)

Microsoft的manual提供了这个:

  

原因:如果许多COM +应用程序在不同的用户帐户下运行   在“此用户”属性中指定的,计算机不能   分配内存为新用户创建新的桌面堆。   因此,这个过程无法启动。

     

替代方法:要解决此问题,请修改该值   以下注册表子项:   HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\会话   管理器\子系统\视窗

答案 2 :(得分:0)

Outlook是一个单例 - COM系统将拒绝封送在不同安全上下文中运行的两个进程之间的调用。