【发布时间】:2018-05-08 05:30:09
【问题描述】:
我的 office vsto 插件有问题。每当我尝试遍历所有电子邮件文件夹以获取他们的电子邮件时,我总是得到 0 个项目,我真的不知道为什么。这是我的代码:
var inbox = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
if (inbox is Outlook.Folder)
{
if (inbox.Parent is Outlook.Folder)
{
for (int i = (inbox.Parent as Outlook.Folder).Items.Count; i > 0; i--)
{
if ((inbox.Parent as Outlook.Folder).Items[i] is Outlook.MailItem)
{
if (((inbox.Parent as Outlook.Folder).Items[i] as Outlook.MailItem).Subject.ToString() == "test")
{
}
}
}
}
}
它通过了前两个检查,但是在循环中
(inbox.Parent as Outlook.Folder).Items.Count
始终返回 0,即使我的收件箱中有大量电子邮件。知道为什么会这样吗?
//
当我尝试使用 .Folders 而不是 .Items 访问它们时,会像这样更改循环,但保持其他所有内容不变:
for (int i = (inbox.Parent as Outlook.Folder).Folders.Count; i > 0; i--){}
,我得到一个例外:
(inbox.Parent as Outlook.Folder).Folders.Count = '(inbox.Parent as Outlook.Folder).Folders.Count' 引发了“System.NullReferenceException”类型的异常
只是为了澄清一下:目标是遍历每个文件夹,访问每个文件夹的第 i 个邮件,并检查其标题是否为“test”。我知道这个例子脱离上下文没有多大意义,所以让我们只关注带来麻烦的部分,即正确计算所有文件夹。
//
【问题讨论】:
-
您似乎在计算收件箱父级...而不是收件箱
-
哦,是的,因为我必须访问所有文件夹,而不仅仅是主收件箱。已编辑。
-
对,但收件箱的父级通常确实没有任何项目......
-
如果不通过收件箱父项,我如何访问所有文件夹?
-
如果你使用
Folders而不是Items来获取父级的子文件夹呢?