Outlook - Interop спрашивает, хочу ли я утвердить сертификат

1

Я использую interop, чтобы получить список всех локальных контактов Outlook (код ниже). Все работает отлично, за исключением одного случая: когда у меня нет внешнего вида в течение времени, когда я использую этот код, я получаю сообщение, которое исчезает примерно через 2 секунды. Ящик сообщений спрашивает меня (перевод, таким образом, английская версия, вероятно, немного отличается): "Настройка mailboxxyz-accept Конфигурация сервера для этого веб-сайта?"

Посмотрев сообщение и посмотрев, как настроены локальные настройки, я увидел, что моя компания использует сертификат в Outlook и, как он выглядит, выглядит так:

  • Если Outlook работает, то мои функции взаимодействия используют сертификат, и, таким образом, сообщение не появляется
  • Если Outlook не работает, мои функции взаимодействия не будут автоматически использовать сертификат, и, таким образом, появится всплывающее окно и спросит, хочу ли я его принять.

Что добавляет слой странности, так это то, что использование функций завершается успешно, а окно сообщений появляется через несколько секунд ПОСЛЕ завершения функций, а затем исчезает через 2 секунды.

Microsoft.Office.Interop.Outlook.Application outlookHandler = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.Items outlookItemsCollection;
MAPIFolder folderContacts = (MAPIFolder)outlookHandler.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
outlookItemsCollection = folderContacts.Items;

foreach (var outlookItem in outlookItemsCollection)
{
    .....
}

Еще один способ получить это явление: когда Outlook не работает, я могу попытаться запустить его:

   Microsoft.Office.Interop.Outlook.Application outlookHandler = new Microsoft.Office.Interop.Outlook.Application();
        var mm = outlookHandler.GetNamespace("MAPI");
        mm.Logon(Type.Missing, Type.Missing, true, true); 
        // Same for the second true being false instead.

Когда я делаю этот прогноз, запрашивает сертификат после запроса профиля по умолчанию.

Теперь мой вопрос: есть ли способ предотвратить появление этого всплывающего окна (или сказать, что методы взаимодействия используют сертификат без запроса)?

  • 0
    Добавлено немного больше информации после дополнительных тестов
  • 0
    Является ли это тем, что каждый клиент Outlook имеет сертификат или сервер обмена использует сертификат, который клиенты Outlook должны принять?
Показать ещё 4 комментария
Теги:
outlook
office-interop

1 ответ

1

Я собираюсь предисловие к этому с тем фактом, что это не элегантное решение, оно должно работать.

// check to see if outlook is running
System.Diagnostics.Process[] prcs = System.Diagnostics.Process.GetProcessesByName("outlook");
// if the found prcs length is 0, outlook isn't running
if(prcs.Length == 0)
{
    // start outlook
    System.Diagnostics.Process.Start("path to outlook");
    // wait for outlook to load
    // call your interop code
}
else
    // outlook was found as an open process
    // call your interop code

Это работает вокруг вашей проблемы, а не для решения основной проблемы. Без какого-либо исключения или чего-либо еще трудно попасть на дно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню