如何在Outlook中获取用户创建的文件夹?
How to obtain folders created by the user in Outlook?
我想知道是否有更好的方法来检测商店内的文件夹是否由用户创建,或者它是否是默认文件夹(由 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 秒。
有没有更好的检测方法?
没有用于识别内置文件夹和自定义文件夹的标记。您可以使用 GetDefaultFolder(OlDefaultFolders) 方法获取文件夹,该方法允许获取 Folder
对象,该对象表示当前配置文件或商店所请求类型的默认文件夹。这样您就可以区分内置文件夹和自定义文件夹了。
如果某个特定文件夹需要太多时间来检索任何信息,您只需避免此类调用即可。
我想知道是否有更好的方法来检测商店内的文件夹是否由用户创建,或者它是否是默认文件夹(由 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 秒。
有没有更好的检测方法?
没有用于识别内置文件夹和自定义文件夹的标记。您可以使用 GetDefaultFolder(OlDefaultFolders) 方法获取文件夹,该方法允许获取 Folder
对象,该对象表示当前配置文件或商店所请求类型的默认文件夹。这样您就可以区分内置文件夹和自定义文件夹了。
如果某个特定文件夹需要太多时间来检索任何信息,您只需避免此类调用即可。