c# - 如何获得收件箱文件夹和项目计数?

标签 c# outlook mapi

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

假设我在邮箱中创建了 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

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

最佳答案

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

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

返回 c;

关于c# - 如何获得收件箱文件夹和项目计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016322/

相关文章:

outlook - 使用 Applescript 设置默认的 Microsoft Outlook for Mac 签名

c# - 出现此错误 : "The remote server returned an error: (422) Unprocessable Entity." when doing post from C# to RoR

c# - 如何处理 Gtk# Notebook 小部件中的选项卡选择?

c# - 从 C# 访问硬件或内存

excel - 循环浏览 Outlook 邮件项目

mapi - 使用 MAPI 从 VBA 发送邮件需要什么引用?

c# - 很好地阅读 outlook mailitem 属性

delphi - 如何将带有附件的 MAPI 电子邮件发送给传真收件人?

c# - 使用 Moq 验证错误的 ASP.NET Controller 单元测试

c# - DatabaseGeneratedOption.None 在 Entity Framework 6 中不起作用