Выполнить программную отправку / получение в Outlook, которая будет работать в 2003, 2007 и 2010 годах - PullRequest
1 голос
/ 16 февраля 2011

Я пытаюсь написать базовый код Outlook, который должен поддерживать Outlook 2003, 2007 и 2010. Я работаю с PIA Outlook 2010.Все работает, кроме метода, который заставляет Outlook выполнять отправку / получение.Я пробовал несколько вариантов:

  1. Вызовите метод Namespace.SendAndReceive (работает в Outlook 2007 и 2010, не работает в Outlook 2003 с AccessViolationException).
  2. Выполните итерации по Namespace.SyncObjectsвызов метода запуска (работает в Outlook 2003 и 2007 и не работает в Outlook 2010 с RPC-сервером, недоступен, когда я пытаюсь вызвать GetNamespace («MAPI») для моего объекта приложения)

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

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Я считаю, что SendAndReceive() был добавлен в качестве удобного метода в 2007 году, поэтому он не будет работать в 2003 году, как вы узнали.Согласно документации 2010 вы все равно сможете использовать SyncObjects collection и по-прежнему вызывать Start().Возможно ли, что у вас в установке 2010 плохая почта / новости / какой-либо профиль?Start() не работает на конкретном SyncObject?

Другое решение, о котором вы, вероятно, уже подумали, - это использовать SyncObjects для 2003 и SendAndReceive() для будущих версий.

0 голосов
/ 06 марта 2014
//First Register the Sync Event     
if (oApp.Session.SyncObjects.Count > 0)
{
    _syncObj = oApp.Session.SyncObjects[1];
    _syncObj.SyncEnd += new Outlook.SyncObjectEvents_SyncEndEventHandler(_syncObj_SyncEnd);
    _syncObj.Start();
}
void _syncObj_SyncEnd()
{
    _syncObj.Stop();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...