vsto outlook add-in: Как проверить, работает ли Outlook с сервером Exchange - PullRequest
2 голосов
/ 21 июня 2011

У меня есть надстройка VSTO Outlook 2007. Я должен проверить, находится ли Outlook в автономном режиме / онлайн с сервером обмена. Я использую код как показано ниже:

 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 подключен.

Я узнал, что общие папки были удалены с сервера Exchange, поэтому он возвращает ноль.

Может кто-нибудь сказать мне какой-нибудь альтернативный и стандартный способ проверить, находится ли Outlook в сети с сервером обмена?

Спасибо и наилучшими пожеланиями, Надим Улла

1 Ответ

2 голосов
/ 07 июля 2011

Посмотрите на свойство 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

...