【问题标题】:How to obtain folders created by the user in Outlook?如何获取用户在 Outlook 中创建的文件夹?
【发布时间】:2019-02-08 18:56:30
【问题描述】:

我想知道是否有更好的方法来检测商店内的文件夹是否由用户创建,或者它是否是默认文件夹(由 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 秒。

有没有更好的检测方法?

【问题讨论】:

  • 如果这只是olServerFailures文件夹,你可以先检查文件夹名称尝试破解。

标签: c# office-interop outlook-addin add-in addin-express


【解决方案1】:

没有用于识别内置和自定义文件夹的标记。您可以使用GetDefaultFolder(OlDefaultFolders) 方法获取该文件夹,该方法允许获取一个Folder 对象,该对象表示当前配置文件或存储所请求类型的默认文件夹。因此,您将能够区分内置文件夹和自定义文件夹。

如果特定文件夹需要太多时间来检索任何信息,您只需避免此类调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多