【问题标题】:How does one get the inbox folder and item count?如何获得收件箱文件夹和项目计数?
【发布时间】:2011-12-22 09:54:10
【问题描述】:

我终于设法弄清楚如何创建收件箱、已发送项目、日历和联系人的项目计数,但我遇到了文件夹计数问题。

假设我在邮箱中创建了 5 个文件夹,每个文件夹中有 2 个子文件夹。当我运行此代码时,它计算 5 个文件夹,而不是所有文件夹和子文件夹,这将等于 15 个文件夹。

我猜是 foreach 语句之类的,但我还是个新手 :-)

#region Run Item Count

Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;

private void btnRunItemCount_Click(object sender, EventArgs e)
{
    app = new Microsoft.Office.Interop.Outlook.Application();
    ns = app.GetNamespace("MAPI");

    MAPIFolder oInbox = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    tbInboxItemCount.Text = oInbox.Items.Count.ToString();
    MAPIFolder oSentItems = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
    tbSentMailItemCount.Text = oSentItems.Items.Count.ToString();
    MAPIFolder oCalendar = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
    tbCalendarItemCount.Text = oCalendar.Items.Count.ToString();
    MAPIFolder oContacts = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
    tbContactsItemCount.Text = oContacts.Items.Count.ToString();
    MAPIFolder oFolder = this.ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    tbFolderItemCount.Text = oInbox.Folders.Count.ToString();
}

#endregion

感谢您提供的任何帮助!丹

【问题讨论】:

    标签: c# outlook mapi


    【解决方案1】:

    您需要递归处理以 Namespace.Folders 开头的所有文件夹。 在我脑海中浮现:

    int allitems = CountFolders(ns.Folders);
    ...
    private int CountFolders(文件夹文件夹)
    {
    int c = folder.count;
    foreach(文件夹中的 MAPIFolder 文件夹)
    {
    c += CountFolders(folder.Folders);
    }
    返回 c;
    }

    【讨论】:

    • 嗨,德米特里!这段代码几乎是一种享受,但是,它计算了所有文件夹,包括我的 PST 文件中的文件夹。你知道如何只计算默认邮箱的文件夹吗?谢谢!
    • 如果您使用 Namespace.GetDefaultFolder(olFolderInbox).Parent.Folders 检索根文件夹集合,您可以从默认存储的顶部开始
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多