C# Microsoft.Office.Interop.Outlook GetFolderFromID
我可以从outlook中获取默认文件夹,这没有问题,但我正在努力获取自定义文件夹。我想从outlook中名为“海量存档”的文件夹中获取电子邮件 但我很难理解如何使用:C# Microsoft.Office.Interop.Outlook GetFolderFromID,c#,outlook,C#,Outlook,我可以从outlook中获取默认文件夹,这没有问题,但我正在努力获取自定义文件夹。我想从outlook中名为“海量存档”的文件夹中获取电子邮件 但我很难理解如何使用: .GetFolderFromID() 根据我收集的信息,它采用的第一个参数是文件夹的名称,例如.GetFolderFromID(“海量存档”) 但是,我不知道应该把什么作为第二个参数的对象 我真的是个新手,所以请像我一样向我解释 outlookApplication = new Application(); outlookName
.GetFolderFromID()
根据我收集的信息,它采用的第一个参数是文件夹的名称,例如.GetFolderFromID(“海量存档”)
但是,我不知道应该把什么作为第二个参数的对象
我真的是个新手,所以请像我一样向我解释
outlookApplication = new Application();
outlookNameSpace = outlookApplication.GetNamespace("MAPI");
//inboxFolder = outlookNameSpace.GetDefaultFolder(OlDefaultFolders.olFolderDeletedItems);
inboxFolder = outlookNameSpace.GetFolderFromID("Mass Archive", "Mass Archive");
mailItems = inboxFolder.Items;
foreach (MailItem item in mailItems)
{
emailDetails = new OutlookEmails
{
EmailFrom = item.SenderEmailAddress,
EmailSubject = item.Subject,
EmailBody = item.Body,
ReceivedTime = item.ReceivedTime
};
listEmailDetails.Add(emailDetails);
ReleaseComObject(item);
}
您不需要搜索-您可以使用
MAPIFolder.Folders[“文件夹名称”]
(其中MAPIFolder
是父文件夹)打开它-您只需要知道它相对于默认文件夹的位置。例如,如果它与收件箱处于同一级别,您可以使用GetDefaultFolder(olFolderInbox)
检索收件箱文件夹,然后使用Inbox.Parent.Folders[“文件夹名称”]
您已经在那里获得了获取默认文件夹的代码-您可以看到该文件夹的StoreID是什么样子吗?我猜是GUID。但我不认为文件夹名称是唯一的:如果你只有一个文件夹名称,你可能需要递归地在树中搜索。你有没有看过我确实有,但我是一个noob,这就是为什么我在这里问一个问题,因为我仍然不明白,看起来这些都是长的十六进制字符串。我猜StoreID是邮件商店的ID,即您正在使用的收件箱或PST,在这里是可选的。EntryID也是一个长的十六进制字符串,我猜它是该文件夹的唯一ID,至少在商店中是唯一的,但可能在所有打开的商店中都是唯一的,因此如果您在同一个收件箱中只需要这一个文件夹,您可以保存该字符串ID,并将其与GetFolderFromID一起使用。(但如果有人重命名了文件夹并创建了新的“海量存档”,则ID仍会指向旧文件夹。)这里有两个答案会在文件夹中循环出现:(一个在MSDN链接中)您可以这样做并打印ID和名称,或者您可以调整其中一个以首先搜索名称。