c# - COMException (0x800401E3) : Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) with scheduled task

标签 c# outlook com-interop

在网上搜索没有成功后,这是我的问题。

我有一个任务,我想安排它从 Outlook 中检索电子邮件的附件并提取数据。 当我手动启动任务时它工作正常但是每当我尝试通过计划任务启动它时它会失败并出现错误:

COMException (0x800401E3): Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

当程序尝试检索或创建 Outlook 实例时发生,如下所示:

private Application GetApplicationObject()
    {

        Application application = null;

        if (Process.GetProcessesByName("OUTLOOK").Any())
        {
            application = Marshal.GetActiveObject("Outlook.Application") as Application;
        }
        else
        {
            application = new Application();
        }
        return application;
    }

我尝试了几种方法(批处理文件、.exe 文件、程序参数),但都失败了。 它是使用与手动启动任务相同的帐户启动的。

有人可以帮助我吗?任何帮助,将不胜感激! 干杯!

最佳答案

Microsoft 目前不推荐也不支持来自任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office在此环境中运行 Office 时,可能会表现出不稳定的行为和/或死锁。

如果您要构建在服务器端上下文中运行的解决方案,则应尝试使用已针对无人值守执行安全处理的组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所必需的功能。此外,您将承担整体解决方案稳定性的风险。在 Considerations for server-side Automation of Office 中阅读更多相关信息文章。

您可以考虑使用低级 API(或任何其他第三方包装器)- Outlook 所基于的扩展 MAPI。或 EWS(如果是 Exchange 配置文件),请参阅 EWS Managed API, EWS, and web services in Exchange了解更多信息。

关于c# - COMException (0x800401E3) : Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) with scheduled task,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544102/

相关文章:

c# - 使用 SqlDependency 与表的定期轮询(性能影响)

c# - dotnetcore 控制台上的 Microsoft.Extensions.Logging 和 Serilog。在 RollingFile 接收器中包含范围信息

html - 为什么我的 HTML 签名在 Thunderbird 中显示正确,但在 Outlook 中显示错误?

php - 如何让 .ics 适用于 Outlook(Laravel 邮件程序)?

html - 电子邮件后备 Outlook Gmail

c# - 如何在 Azure Web 作业中使用 QueueTrigger 避免竞争条件?

c# - IEnumerable<T> 和 IQueryable<T> 的通用方法

c# - 0x800401f3 COMInterop Dll 类字符串无效

c# - 错误 : Word 2013 VSTO Cannot Handle Image in Header Formatted Behind or In Front of Text

c# - 无法从 VBA (VB6 ok) 实例化用 C# 编写的 COM 对象