Как обновить все папки Outlook (2003) с помощью C # - PullRequest
0 голосов
/ 11 июня 2011

Мне нужно обновить все папки Outlook из моего приложения. Вот мой код, но он не работает.

Outlook.Application app = null;
Outlook.SyncObject _syncObj = null;

while (OutlookNotFound)
{
    i++;
    try
    {
        app = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
        OutlookNotFound = false;
    }
    catch (System.Exception ex)
    {
        Thread.Sleep(1000);
    }
    finally
    {
        if (i > 10)
        OutlookNotFound = false;
    }
}

if (!OutlookNotFound)
{
    //app.Session.GetDefaultFolder(Outlook.OlDefaultFolders.);
    if (app != null)
    {
        for (Int32 j = 0; j < app.Session.SyncObjects.Count; j++)
        {
            _syncObj = app.Session.SyncObjects[1];
            _syncObj.SyncEnd += 
                new Outlook.SyncObjectEvents_SyncEndEventHandler(_syncObj_SyncEnd);
        }

        _syncObj.Start();
        //app.Session.SyncObjects.AppFolders.SyncEnd += 
        //    new Outlook.SyncObjectEvents_SyncEndEventHandler(AppFolders_SyncEnd);
        //app.Session.SyncObjects.AppFolders.Start();

        return true;
    }
    else
    {
        return false;
    }
}

1 Ответ

0 голосов
/ 15 июня 2011

это немного обычный подход к попытке «захватить» активный объект внешнего вида ... Особенно, если активного объекта нет.Более стандартный подход - это нечто вроде:

outlookApplication = new Application();
outlookNamespace = m_OutlookApplication.GetNamespace("mapi");

// If an outlook app is already open, then it will reuse that
// session. Else it will perform a fresh logon.
outlookNamespace.Logon(accountName, password, true, true);
...