3

我正在用 C# 开发一个独立的 Outlook WPF 应用程序。我要做的是让程序监视任何传入邮件的公用文件夹,并通知用户任何邮件到达。

我已经成功地做到了这一点,但我觉得我这样做的方式很笨拙。本质上,我正在构建 MailItems 的集合,我的程序通过计时器重新扫描公用文件夹以查找任何新邮件。

我想知道的是,有没有办法将集合直接绑定到 MAPIFolder 或 MAPIFolder.Items。我实际上已经能够将 Listbox.ItemsSource 设置为 Outlook.Items 对象,但它只是将 (SysCom.Object) 显示为列表框项。所以我觉得这是可能的,但我需要一些方法来告诉列表框只显示 MailItems(以及 Mailitem 的主题字段的适当绑定路径)。

我想我最终想要做的是“镜像”一个 Outlook 文件夹,而不是将其中的项目复制到其他列表对象中。

4

1 回答 1

2

无法以与绑定到记录集相同的方式进行绑定,但您需要做的是监视该文件夹 (Items.ItemAdd/ItemChange/ItemRemove) 上的事件。

此外,不要加载文件夹中的所有项目 - 除了效率极低之外,您可能会用完 RPC 通道限制(由 Exchange 强制执行)。仅加载足够的项目以显示给最终用户。其他项目需要在用户滚动时加载。

在低级别,Outlook 使用不需要将每个项目作为单独对象打开的 MAPI 表。扩展 MAPI 不能从 .Net 语言中使用,但您可以使用 Redemption 中的 MAPITable 对象 ( http://www.dimastr.com/redemption/mapitable.htm ) 或 Outlook 2007 及更高版本 ( http:// /msdn.microsoft.com/en-us/library/office/bb176406(v=office.12).aspx )。

于 2012-08-16T22:55:27.133 回答