Как получить папки, созданные пользователем в Outlook? - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу знать, есть ли лучший способ определить, была ли папка внутри магазина создана пользователем, или это папка по умолчанию (созданная Outlook).

У меня есть код ниже, который перебирает все папки в магазине, обнаруживая некоторые из них по умолчанию.

public List<string> GetEntryIDFoldersToMonitor()
{
    OlDefaultFolders[] defaultFolders = new OlDefaultFolders[] 
    {
        OlDefaultFolders.olFolderCalendar,
        OlDefaultFolders.olFolderConflicts,
        OlDefaultFolders.olFolderContacts,
        OlDefaultFolders.olFolderDeletedItems,
        OlDefaultFolders.olFolderDrafts,
        OlDefaultFolders.olFolderJournal,
        OlDefaultFolders.olFolderJunk,
        OlDefaultFolders.olFolderLocalFailures,
        OlDefaultFolders.olFolderNotes,
        OlDefaultFolders.olFolderOutbox,
        OlDefaultFolders.olFolderRssFeeds,
        OlDefaultFolders.olFolderSentMail,
        OlDefaultFolders.olFolderServerFailures,
        OlDefaultFolders.olFolderSuggestedContacts,
        OlDefaultFolders.olFolderSyncIssues,
        OlDefaultFolders.olFolderTasks,
        OlDefaultFolders.olFolderToDo
    };

    Stores stores = Global.OutlookApp.Session.Stores;
    MAPIFolder folder = null;
    List<string> foldersToMonitor = new List<string>();    

    for (int i = 1; i < stores.Count; i++) 
    {
        Store store = stores[i];

        try
        {
            for (int j = 0; j < defaultFolders.Length; j++)
                folder = store.GetDefaultFolder(defaultFolders[j]);
        }
        catch { continue; }

        try
        {
             if (folder != null)
                 foldersToMonitor.Add(folder.EntryID);
        }
        finally
        {
            if (folder != null)
                Marshal.ReleaseComObject(folder);
        }
    }

    return foldersToMonitor;
}

Я спрашиваю об этом, потому что некоторые папки загружаются слишком долго. Например, у одного из наших пользователей обработка папки по умолчанию olServerFailures заняла 55 секунд.

Есть ли лучший способ обнаружить это?

1 Ответ

0 голосов
/ 18 сентября 2018

Нет маркеров для идентификации встроенных и пользовательских папок. Вы можете получить папку, используя метод GetDefaultFolder (OlDefaultFolders) , который позволяет получить объект Folder, представляющий папку по умолчанию запрошенного типа для текущего профиля или хранилища. Так что тогда вы сможете различать встроенные и пользовательские папки.

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

...