问题描述
||
我有一个VSTO Outlook 2007加载项。我必须检查Outlook是否在Exchange Server脱机/联机状态。我正在使用如下代码:
NameSpace ns = Application.GetNamespace(\"MAPI\");
MAPIFolder publicFolder = ns.GetDefaultFolder(OlDefaultFolders.olPublicFoldersAllPublicFolders);
if (publicFolder == null)
{
offline = true;//Flag is set to tell it is offline
}
之前的这段代码运行良好。但是突然之间,即使Outlook处于联机状态,获取公用文件夹的行也开始返回null。
我知道公用文件夹已从交换服务器中删除,这就是它返回null的原因。
谁能告诉我检查Outlook是否与Exchange Server联机的任何其他标准方式?
谢谢与问候!
纳迪姆·乌拉(Nadeem Ullah)
解决方法
看一下ExchangeConnectionMode属性,它返回Exchange状态。
要回复@Clint,请在下面的评论中说,距离我回答问题已经过去了很短的时间,我已经没有安装环境了,因此这里的一些(完全未经测试的)代码可能会或可能不会工作,如果我希望它不会为正确的方向提供提示。
将以下内容添加到动作中,例如一个按钮,您可以在初始化完成后调用它。
Outlook.NameSpace outlookSession = null;
outlookSession = MyAddin.CurrentInstance.OutlookApp.Session;
Debug.WriteLine(outlookSession.ExchangeConnectionMode);
这应该返回类似“ѭ2”的内容,然后您将不得不将其转换为想要执行的格式或动作。
http://msdn.microsoft.com/zh-CN/library/microsoft.office.interop.outlook._account.exchangeconnectionmode.aspx