Показать новую электронную почту в Outlook - PullRequest
3 голосов
/ 16 ноября 2011
  1. Приложение Windows вызывает бизнес-логику
  2. Бизнес-логика создает новую электронную почту с использованием Веб-службы Exchange и возвращает идентификатор записи электронной почты в приложение Windows
  3. Приложение Windows пытается найти и отобразить новую электронную почту с помощью Outlook Interop на основе идентификатора записи электронной почты.

При использовании * выше не работает Режим кэширования Exchange .Outlook только проверяет локальный кеш на наличие сообщения, и, поскольку оно только что было создано на сервере, оно не будет немедленно доступно локально.

Тем не менее, оно отлично работает, когда учетная запись не использует Cached Exchange.Режим, потому что Outlook проверяет Exchange Server на наличие электронной почты.

Итак, вопрос:

Как убедиться, что Outlook проверяет Exchange Server вместолокальный кэш или, по крайней мере, синхронизируется с сервером перед поиском сообщения?

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

void ShowEmail(string entryId)
{
  // (COM release and error handling removed for readability)
  var app = new Microsoft.Office.Interop.Outlook.Application();
  var ses = app.Session;
  var mailItem = 
    (Microsoft.Office.Interop.Outlook.MailItem)ses.GetItemFromID(entryId);
  mailItem.Object.Display(true);
}

1 Ответ

2 голосов
/ 16 ноября 2011

Вы не можете контролировать загрузку или синхронизацию почтового ящика.Смотрите этот пост .Если пользователь использует Режим кэширования Exchange - он не может использовать эту функцию.

Если у вас есть доступ к реестру - вы можете попробовать отключить Режим кэширования Exchange , а затем снова включить его.См. этот пост , который изменяет реестр для включения / выключения CEM.

...