IRDOSession.GetFolderFromPath 在通过 Redemption.dll 读取 public 文件夹时抛出 MAPI_E_FAILONEPROVIDER 错误

IRDOSession.GetFolderFromPath throws MAPI_E_FAILONEPROVIDER error while Reading public folders through Redemption.dll

我正在升级一个控制台应用程序,它是读取 Outlook Public 文件夹。 当我手动 运行 时它工作正常。但是当 运行 通过 IBM Tivoli Workload Scheduler 时抛出异常。

因此尝试提供收件箱文件夹名称而不是 public 文件夹名称。然后它在调度程序中也能正常工作。所以只有我在尝试单独读取 public 文件夹时遇到错误

Error in IMAPISession::OpenMsgStore: MAPI_E_FAILONEPROVIDER ulVersion: 0 Error: The attempt to log on to Microsoft Exchange has failed. Component: Microsoft Exchange Information Store ulLowLevelError: 1144 ulContext: 1298

var session = new RDOSession();
session.Logon(string.Empty, string.Empty, false, true, null, null);
session.Stores.FindExchangePublicFoldersStore();
var publicFolder = session.GetFolderFromPath(folderPath);

Public 文件夹:

\Public Folders - example@domain.com\All Public Folders\XXX Folders\YYY/Object & Data\ZZZ\

  • 不工作

收件箱文件夹:

\example@domain.com\Inbox

  • 工作

编辑:添加日志并找出 Exchange 连接模式更改

Manual Run ExchangeConnectionMode: olCachedConnectedFull

Scheduler Run ExchangeConnectionMode: olOnline

注意:我们正在使用Redemption.dll - 5.10

更新: 旧服务器使用 Redemption.dll - 5.2 和 Outlook 2003 以及 Exchange Server 2010。它也适用于 TWS。 新服务器使用 Redemption.dll - 5.10 和 Outlook 2016 以及 Exchange Server 2010。但不适用于交易平台。

可能 Public 文件夹存储未缓存,因此当您在服务(调度程序)下登录时,存储提供商没有打开存储的凭据。

为了解决这个问题,我们需要做两件事:

  1. 点击交易平台工作中的交互选项
  2. 购买 最新 Redemption.dll 的可分发版本并使用它