Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft.Office.Interop.Outlook GetFolderFromID_C#_Outlook - Fatal编程技术网

C# Microsoft.Office.Interop.Outlook GetFolderFromID

C# Microsoft.Office.Interop.Outlook GetFolderFromID,c#,outlook,C#,Outlook,我可以从outlook中获取默认文件夹,这没有问题,但我正在努力获取自定义文件夹。我想从outlook中名为“海量存档”的文件夹中获取电子邮件 但我很难理解如何使用: .GetFolderFromID() 根据我收集的信息,它采用的第一个参数是文件夹的名称,例如.GetFolderFromID(“海量存档”) 但是,我不知道应该把什么作为第二个参数的对象 我真的是个新手,所以请像我一样向我解释 outlookApplication = new Application(); outlookName

我可以从outlook中获取默认文件夹,这没有问题,但我正在努力获取自定义文件夹。我想从outlook中名为“海量存档”的文件夹中获取电子邮件 但我很难理解如何使用:

.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和名称,或者您可以调整其中一个以首先搜索名称。