VSTO Outlook插件:如何检查Outlook是否在线与Exchange服务器连接

3

我有一个 VSTO Outlook 2007 插件。我需要检查 Outlook 是否与 Exchange 服务器处于离线 / 在线状态。我使用以下代码:

 NameSpace ns = Application.GetNamespace("MAPI");
 MAPIFolder publicFolder = ns.GetDefaultFolder(OlDefaultFolders.olPublicFoldersAllPublicFolders);
    if (publicFolder == null)
       {
          offline = true;//Flag is set to tell it is offline
       }

之前这段代码一直很正常,但突然间获取公共文件夹的那行代码开始返回null,即使Outlook在线也是如此。

后来我得知交换服务器上的公共文件夹已被移除,所以它返回了null。

请问有没有其他替代方法和标准方法可以检查Outlook是否与交换服务器在线?

谢谢和最好的祝福, Nadeem Ullah

1个回答

3
请看ExchangeConnectionMode属性,它返回Exchange状态。
若要回复下面的评论@Clint,已有十年时间过去了,我不再安装相关环境,这里提供一些(完全未经测试的)代码,可能有效,也可能无效,如果无效,希望能给出正确方向的提示。将以下内容添加到操作(例如按钮)中,可以在初始化完成后调用。
Outlook.NameSpace outlookSession = null;
outlookSession = MyAddin.CurrentInstance.OutlookApp.Session;
Debug.WriteLine(outlookSession.ExchangeConnectionMode);

这应该返回类似于:Outlook.OlExchangeConnectionMode.olOnline,然后您需要将其转换为所需的格式或操作。请参考http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._account.exchangeconnectionmode.aspx

@Chjortlund,非常有用的信息,我查看了链接。如果您能告诉我如何在代码中使用Exchangeconnection以返回连接状态,那就太好了。 - Clint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接