选择用于开发 Outlook 解决方案的 API 或技术

**摘要:**本文介绍可扩展 Microsoft Outlook 的每个 API 和技术,并对其进行评价以帮助您选择适当的 API 或技术来开发解决方案。

上次修改时间: 2012年10月10日

适用范围: Office 2007 | Outlook | Outlook 2007 | Outlook 2010 | Visual Studio

本文内容
概述
客观评价标准
对象模型或 PIA 的决定因素
MAPI 的决定因素
辅助 API 的决定因素
进程内与进程外解决方案
托管与非托管解决方案
小范围内应用的 API 和技术
结论
其他资源:对象模型和 PIA
其他资源:辅助 API
其他资源:主要参考、资源和代码示例

**发布时间:**2011 年 4 月

**供稿人:**Microsoft Corporation 的 Angela Chu-Hatoun

目录

  • 概述

  • 客观评价标准

  • 对象模型或 PIA 的决定因素

  • MAPI 的决定因素

  • 辅助 API 的决定因素

  • 进程内与进程外解决方案

  • 托管与非托管解决方案

  • 小范围内应用的 API 和技术

  • 结论

  • 其他资源:对象模型和 PIA

  • 其他资源:辅助 API

  • 其他资源:主要参考、资源和代码示例

概述

Microsoft 支持各种扩展 Microsoft Outlook 的 API 和技术:Outlook 对象模型和相应的 Outlook 主互操作程序集 (PIA)、消息处理 API (MAPI)、辅助 API、Outlook Social Connector (OSC) 提供程序扩展性和 Microsoft Office Mobile Service (OMS)。大多数 Outlook 解决方案都使用对象模型、PIA、MAPI 和辅助 API。OSC 提供程序扩展性和 OMS 用于更具体的目的:前者将社交网络数据与 Outlook 集成,后者将移动设备与 Outlook 和 Microsoft SharePoint 的移动功能集成。由于大多数现有 Outlook 解决方案都使用对象模型、PIA 和 MAPI,因此本文主要阐述这些 API 的选择标准。请注意,解决方案不一定只能使用一个 API。例如,用 C++ 编写的 COM 外接程序可以在同一个解决方案中使用对象模型、MAPI 和辅助 API。

若要从本文中得到最大收获,您应熟悉用户级别的 Outlook,同时具有软件开发方面的一般知识。但是,您无需全面了解这些 API 或技术所支持的功能。本文帮您回答以下问题:

  • 如果您只是对解决方案的目的、目标市场和可用资源有一个粗略的概念,那么选择 API 应考虑哪些其他标准?

  • 如果您的解决方案必须在早期版本的 Outlook(包括 Outlook 2003)上运行,这对您的 API 选择有何影响?

  • 如果您的解决方案必须循环访问包含数千个项目的 Outlook 文件夹,而且您需要能够修改这些项目,哪种 API 效果最好?

  • 如果您的解决方案严重依赖 Outlook 业务逻辑并与其他 Office 应用程序交互,Outlook 对象模型是否为最佳选择?

  • 对象模型和 MAPI 允许您在 Outlook 中扩展哪些功能?

  • 如果使用对象模型或 MAPI 均可完成任务,应如何决定使用哪一个 API?

本文的以下各节中介绍选择标准:

  • 客观评价标准:客观地描述对象模型、PIA 和 MAPI 在功能、开发、安全和部署方面的特点。

  • 对象模型或 PIA 的决定因素:列出在选择使用对象模型还是 PIA 时要考虑的要点。

  • MAPI 的决定因素:列出在选择使用 MAPI 时要考虑的要点。

  • 辅助 API 的决定因素:列出在选择使用辅助 API 时要考虑的要点。

  • 进程内与进程外解决方案:列出在决定是实施在 Outlook 进程内运行的还是在进程外运行的解决方案时要考虑的要点。

  • 托管与非托管解决方案:列出决定是创建托管解决方案还是非托管解决方案时考虑的要点。

  • 小范围内应用的 API 和技术:提供 OSC 提供程序扩展性和 OMS 的概要说明,并列出其他信息来源。

客观评价标准

本节介绍一些标准,可用来比较对象模型、PIA 和 MAPI 以确定哪个选项最能满足您的需要。根据您的项目和可用资源,不同的标准的重要性各不相同。

对象模型和 PIA 的客观评价标准

在客户端计算机上运行的解决方案可以使用 Outlook 对象模型或 PIA 以编程方式访问 Outlook 项目,如联系人、消息、日历项、会议请求和任务等。与 MAPI 不同,Outlook 对象模型和 PIA 可以针对 Outlook 用户界面更改(如更改当前文件夹或显示 Outlook 检查器)等提供事件通知。

备注

要使解决方案能够访问存储在 Microsoft Exchange 邮箱或个人文件夹 (.pst) 文件中的数据,必须在运行该应用程序的客户端计算机上安装并配置 Outlook。

Outlook 对象模型和 PIA 都可用于扩展 Outlook。PIA 定义映射到基于 COM 的对象模型的托管接口以及托管解决方案可以与之交互的托管接口。在本节的其余讨论中,大部分功能、安全和部署标准都以相同方式适用于对象模型和 PIA。有关 PIA 如何促进 COM 与 .NET Framework 之间的互操作性的详细信息,请参阅 COM 和 .NET 之间的互操作性简介Outlook PIA 的体系结构

本节中的表按以下类别定义评价标准:

  • 功能标准:描述通过这种技术可以完成和无法完成的事情。

  • 开发标准:描述使用这种技术所需的开发工具或信息

  • 安全标准:描述与这种技术相关的安全和权限问题。

  • 部署标准:描述为这种技术推荐的部署和分发方法。

下表显示 Outlook 对象模型和 PIA 的评价标准。

功能标准

标准

Outlook 对象模型或 PIA

应用程序领域

使用 Outlook 对象模型或 PIA 的外接程序或独立应用程序通常处理特定于用户的消息、自定义 Outlook 用户界面或为专门的解决方案(如与 Outlook 集成的客户关系管理 (CRM) 解决方案)创建自定义项目类型。Outlook 对象模型或 PIA 有时用于非正规工作流程中的消息处理,尤其是在不允许在 Microsoft Exchange Server 上进行应用程序开发的情况下。与基于浏览器的客户端不同,缓存模式操作使 Outlook 解决方案能够在用户脱机或从企业网络断开时继续工作。

主要对象

Outlook 对象模型和 PIA 中的顶层对象是 Outlook Application 对象。ExplorersConversationInspectorsViewsNavigationPaneSolutionsModuleFormRegion 和相关对象分别表示 Outlook 用户界面的各个元素。NameSpaceStoresFoldersAccountsAccountSelectorAddressEntriesExchangeUser 和相关对象支持扩展 Outlook 会话、配置文件、用户帐户、消息存储和文件夹。在数据级别,大量项目级对象(如 MailItemAppointmentItemContactItemTaskItem)表示内置的 Outlook 项目类型。PropertyAccessorTableSearchItemPropertiesUserDefinedPropertiesAttachmentsCategoriesRecipientsRecurrencePatternRemindersRules 和相关对象支持自定义和处理项目级对象。

数据访问模型

Outlook 对象模型和 PIA 将所有数据表示为一组分层的对象和集合。

线程模型

对 Outlook 对象模型和 PIA 的所有调用都在 Outlook 的前台主线程上执行。Outlook 对象模型支持的唯一线程模型是单线程单元 (STA)。不支持从后台线程调用 Outlook 对象模型或 PIA ,因为这会导致您的解决方案中出现错误和意外结果。

应用程序体系结构

通常,COM 外接程序和其他 Microsoft Office 应用程序使用 Outlook 对象模型扩展 Outlook。托管解决方案可以使用 Outlook PIA 以及 Microsoft Visual Studio 和 .NET Framework 的 COM 互操作层来访问 Outlook 对象模型。Visual Studio 可提供模板和其他类库以及清单,以便为 Office 文档和应用程序自定义提供方便。有关使用 Visual Studio 为 Outlook 开发托管外接程序的详细信息,请参阅Architecture of Application-Level Add-InsOutlook Solutions。Outlook 对象模型还支持 Visual Basic for Applications (VBA) 宏和 Windows Scripting Host (WSH),但不支持 Windows 服务应用程序。

远程使用

只能在安装了 Outlook 的计算机上使用 Outlook 对象模型和 PIA。可使用 Outlook 对象模型来访问 Outlook 应用程序中提供的并存储在 Exchange 中的信息。

事务

Outlook 对象模型和 PIA 不支持事务。

可用性

目前,Outlook 对象模型在所有版本的 Outlook 中都可用。PIA 在自 Outlook 2003 以后的各种 Outlook 版本中可用。每个新版本的 Outlook 对此都进行了扩展和改进。

开发标准

标准

Outlook 对象模型或 PIA

语言和工具

您可以通过使用任何 COM 或与自动化兼容的语言(如 Visual Basic 或 C#)以及非 COM 语言(如本机 C 或 C++)来实现 Outlook 对象模型应用程序。Microsoft Visual Studio 2010 中的 Microsoft Office 开发工具是开发 Outlook 2010 和 Outlook 2007 托管外接程序的首选工具。Microsoft Visual Studio 2005 Tools for the Microsoft Office System 是 Outlook 2003 的首选工具。您还可以使用 Visual Studio 2010 中的 Office 开发工具为 32 位和 64 位版本的 Outlook 创建解决方案。当您在 Visual Studio 2010 中的 Office 开发工具或 Microsoft Visual Studio Tools for the Microsoft Office System 中构建解决方案时,为目标平台指定"任何 CPU"选项会生成对 32 位和 64 位版本的 Outlook 2010 都有效的托管解决方案。

托管实现

Outlook PIA 使 Outlook 对象模型能够用于托管代码环境中,这得益于一组丰富的类库和解决了 VBA 和 COM 外接程序的众多局限性的支持技术。PIA 是一个 COM 包装,它充当托管环境和 COM 环境之间的桥梁。有关详细信息,请参阅为什么要使用 Outlook PIA

可脚本化

可在脚本中使用 Outlook 对象模型。

测试和调试工具

使用 Outlook 对象模型或 PIA 无需特殊的调试工具。另一方面,您可以使用 Visual Studio 提供能方便应用程序测试和调试的集成开发环境。

专家可用性

找到使用 Outlook 对象模型或 PIA 成功开发应用程序的开发人员相对较为容易。Outlook 对象模型和 PIA 适用于借助广泛提供的开发工具(如 Visual Studio)创建的外接程序。这些工具提供了可简化开发过程的设计时环境。

可用信息

Microsoft 和第三方资源都提供有使用 Outlook 对象模型进行编程的信息。有关 Outlook 对象模型的详细信息,请参阅 Outlook 2010 开发人员参考。有关 Outlook PIA 的详细信息,请参阅 Outlook 2010 主互操作程序集参考。有关使用 Visual Studio 中的 Office 开发工具开发的托管 Outlook 解决方案的示例,请参阅使用 Visual Studio 创建的 Outlook 解决方案

开发人员和部署许可

请参阅您的 Exchange 和 Microsoft Developer Network (MSDN) 订购许可协议,以确定 Outlook 和在您的应用程序中使用 Outlook 对象模型是否需要额外许可证。

安全标准

标准

Outlook 对象模型或 PIA

设计时权限

使用 Outlook 对象模型或 PIA 开发应用程序无需任何特殊访问权限。

安装权限

安装使用 Outlook 对象模型或 PIA 的应用程序无需任何特殊访问权限。但是,需要有本地管理员权限才能安装 Office 和 Outlook。

运行时权限

运行使用 Outlook 对象模型或 PIA 的应用程序无需任何特殊访问权限。

内置安全功能

Outlook 对象模型和 PIA 通过 MAPI 与 Exchange 通信,通过 Active Directory 服务接口 (ADSI) 与 Active Directory 通信。运行该应用程序的用户的当前安全性上下文用于确定该代码可以访问的资源。默认情况下,外接程序是受信任的,对 Outlook 对象模型或 PIA 中的所有对象、属性和方法具有完全访问权限。IT 管理员可以控制哪些外接程序和对象能够访问 Outlook 对象模型或 PIA。Outlook 对象模型和 PIA 会阻止在 Outlook 进程外运行的代码访问安全对象和方法。

安全监控功能

Outlook 对象模型和 PIA 不提供额外的安全监控功能。

部署标准

标准

Outlook 对象模型或 PIA

服务器平台要求

Outlook 对象模型和 PIA 是客户端技术。

客户端平台要求

使用 Outlook 对象模型或 PIA 访问 Exchange 数据的应用程序要求 Outlook 安装在本地计算机上。

部署方法

可通过使用标准应用程序安装软件来分发使用 Outlook 对象模型或 PIA 的应用程序。

部署说明

因为不应将 Outlook 安装在 Exchange Server 上,所以使用 Outlook 对象模型或 PIA 的应用程序不能在 Exchange Server 上运行。

MAPI 的客观评价标准

您可以使用 MAPI 访问公共和私人存储区中的项目和文件夹,以及访问随每个项目存储的属性。所有版本的 Outlook 都使用 MAPI。您可以创建使用 MAPI 的客户端,还可以创建 MAPI 服务器和 MAPI 窗体处理程序。本节中的信息仅适用于 MAPI 客户端应用程序。

备注

MAPI 是用于访问 Exchange 中或个人文件夹 (.pst) 文件中的信息的一种成熟机制,并且 MAPI 提供了一些任何其他 API 中所没有的功能。不过,MAPI 在 Intranet 外不大适用,它要在 MAPI 会话期间维护一个打开的连接,并且不容易掌握。MAPI 不强制实施 Outlook 业务逻辑,所以您必须特别小心,以确保维持 Outlook 业务逻辑。

下表显示 MAPI 的评价标准。

功能标准

标准

MAPI

应用程序领域

使用 MAPI 的客户端应用程序访问存储在 Exchange 中的用户邮箱或公用文件夹信息,以及存储在 Active Directory 中的用户目录信息。使用 MAPI 的客户端应用程序通常是电子邮件客户端(如 Outlook)和需要复杂电子邮件处理的应用程序。

主要对象

MAPI 对象全都通过 IMAPISession : IUnknown 接口获得。该会话对象为客户端提供对象访问权,以处理 MAPI 配置文件、状态、消息服务提供程序管理、消息存储表和通讯簿。消息存储表包含消息存储、文件夹、消息、附件和收件人的对象。通讯簿表包含消息传递用户和通讯组列表的对象。

数据访问模型

MAPI 将消息和用户表示为一组分层的对象。

线程模型

没有特定的线程限制。但是,使用自由线程处理的应用程序应避免在线程间共享 MAPI 对象,因为封送处理对象的开销较高。MAPI 和 MAPI 服务提供程序使用自由线程处理。

应用程序体系结构

MAPI 客户端应用程序通常是基于 Windows 窗体的客户端应用程序。但是,您可以使用 MAPI 编写 N 层应用程序。

远程使用

MAPI 使用远程过程调用 (RPC) 与 Exchange Server 通信。通常,系统会故意阻止 RPC 通过 Internet 防火墙。

事务

MAPI 不支持事务。

可用性

目前,所有版本的 Windows 都附带 MAPI 存根。Office 在安装 Outlook 时会安装它自己的 MAPI 子系统。目前预计不会对 MAPI 进行更改。

开发标准

标准

MAPI

语言和工具

您可以使用 C 或 C++ 直接访问 MAPI。其他可以访问 C/C++ 调用约定的语言或许能够访问 MAPI。不支持使用托管语言,如 Visual Basic 或 C#。必须为 32 位和 64 位版本的 Outlook 编译单独的 MAPI 解决方案。

托管实现

MAPI 是非托管组件。不支持在 Visual Studio 和 .NET Framework 的 COM 互操层下使用 MAPI。有关托管组件的 MAPI 支持的详细信息,请参阅知识库文章 266353:客户端消息传递开发的支持指南

可脚本化

不能直接在脚本中使用 MAPI。

测试和调试工具

调试使用 MAPI 的应用程序无需特殊的调试工具。另一方面,您也可以使用MFCMAPI(该链接可能指向英文页面)。MFCMAPI 使用 MAPI 通过图形用户界面提供对 MAPI 存储的访问权限,这使您可以方便地对在使用 MAPI 扩展 Outlook 时遇到的问题进行调查。

专家可用性

很难找到专家级 MAPI 程序员,而且学习这门技术要花相当长的时间。除 Microsoft 社区外,只有少数高质量的第三方网站提供有用的 MAPI 开发信息。

可用信息

Microsoft 和第三方都提供有描述 MAPI 编程的书籍。

开发人员和部署许可

开发使用 MAPI 的应用程序无需特别许可。

安全标准

标准

MAPI

设计时权限

开发人员必须具有相应的权限才能访问 Exchange 存储中的数据。Exchange 在 Active Directory 中存储用户和通讯组列表信息,因此创建访问该信息的 MAPI 客户端应用程序的开发人员必须具有检索和设置该信息的能力。

安装权限

安装基于 MAPI 的应用程序通常要求用户是本地管理员,或有权安装软件。

运行时权限

运行基于 MAPI 的应用程序通常只要求用户具有访问 Exchange 存储或个人文件夹 (.pst) 文件中的数据所需的足够权限。

内置安全功能

在大多数平台上 MAPI 配置文件可以受密码保护。

部署标准

标准

MAPI

服务器平台要求

必须正确配置其中存储 MAPI 客户端应用程序用户的用户数据的 Exchange Server 以允许 MAPI 客户端进行访问。

客户端平台要求

客户端应用程序安装程序应验证计算机上是否存在适当版本的 MAPI,以及是否使用 Mapisvc.inf 文件正确配置了该 MAPI。

部署方法

可通过使用标准软件分发技术将使用 MAPI 的应用程序部署到客户端计算机。

部署说明

安装程序应验证是否存在正确版本的 MAPI。

对象模型或 PIA 的决定因素

一般情况下,如果您的解决方案将自定义 Outlook 用户界面或依赖于 Outlook 的业务逻辑,则应使用对象模型或 PIA。图 1 显示 Outlook 解决方案使用对象模型或 PIA 的主要基准场景。

备注

有关场景的详细信息,请单击下图中的框。

图 1. Outlook 对象模型或 PIA 支持的主要基准场景。

https://msdn.microsoft.com/zh-cn/library/ff866278(v=office.14)

除了基准场景,如果您的 Outlook 解决方案支持图 2 中所示的任何场景,并且您的解决方案将运行在 Outlook 2007 或 Outlook 2010 而非早期版本上,则您也可以使用对象模型或 PIA。图 2 指定您可以在 Outlook 对象模型中用来扩展每个场景的主要对象或成员(但 Visual Studio 自动化对象模型中的 IDTExtensibility2 接口和 Office 对象模型中的 IRibbonExtensibility 接口除外,您可以将这两个接口与 Outlook 对象模型集成)。

图 2. Outlook 2007 和 Outlook 2010 的对象模型或 PIA 支持的更多场景。

如果您的 Outlook 解决方案将运行在 Outlook 2010 而非早期版本上,则您可以选择使用对象模型或 PIA 来支持图 3 中所示的场景。图 3 指定您可以在 Outlook 对象模型中用来扩展每个场景的主要对象或成员(但 Office 对象模型中的 IRibbonControlIRibbonExtensibilityIRibbonUI 接口除外,您可以将这些接口与 Outlook 对象模型集成)。

图 3. Outlook 2010 的对象模型或 PIA 支持的更多场景。

https://msdn.microsoft.com/zh-cn/library/ff869218(v=office.14)

MAPI 的决定因素

一般情况下,您使用 MAPI 访问基于 MAPI 的服务器(如 Microsoft Exchange 服务器)上的数据,并执行如下任务:

  • 创建自定义服务提供程序,如通讯簿提供程序、传输提供程序或存储提供程序。

  • 创建接收器进程。

  • 创建或处理配置文件。

  • 将应用程序作为 Windows NT 服务运行。

  • 在后台线程上运行任务。例如,在后台线程中枚举文件夹中的众多项目和修改项目属性可以优化性能。

有关详细信息和代码示例,请参阅 Outlook 2010 MAPI 参考MFCMAPI(该链接可能指向英文页面)

此外,如果您的解决方案在早于 Outlook 2007 的 Outlook 版本上运行,并且如下场景适用于您的解决方案,则您应使用 MAPI 来扩展这些场景。

  • 设置和获取未在对象模型中公开的内置项目级属性。

  • 管理帐户、附件、 Exchange 通讯组列表、Exchange 用户或存储。

  • 存储解决方案的专用数据。

  • 管理帐户的消息存储。

自 Outlook 2007 起,对象模型开始支持一系列功能,而在 Outlook 2007 之前,要得到这些功能,开发人员不得不求助于 MAPI 或其他 API,如 Microsoft 协作数据对象 (CDO) 1.2.1 和 Microsoft Exchange 客户端扩展。所以,如果前面列出的任何场景适用于您的解决方案,而您的解决方案在 Outlook 2007 或 Outlook 2010 上运行,则您可以并且应该使用 Outlook 对象模型或 PIA 来支持这些场景。有关统一 Outlook 开发技术的 Outlook 2007 增强功能的详细信息,请参阅 What's New for Developers in Outlook 2007 (Part 1 of 2)。

辅助 API 的决定因素

当对象模型或 MAPI 不提供解决方案时,Outlook 辅助 API 可以与 Outlook 业务逻辑或 MAPI 集成。在下列场景中可使用 Outlook 辅助 API:

  • 帐户管理:管理帐户信息、处理帐户、在帐户更改时提供通知以及保护帐户免受垃圾邮件侵扰。

  • 数据降级:用首选字符格式包装对象,而不是以其本机格式下公开对象。

  • 重定日历和时区支持的基准:重定 Outlook 日历基准以支持夏令时。

  • 忙/闲状态:在日历上提供忙/闲信息。

  • 联系人图片:确定联系人图片在 Outlook 中的显示方式。

  • 项目时效性:确定 Outlook 项目是否包含未保存更改。

  • 对项目分类:发送 Outlook 项目后对项目分类。

有关辅助 API 的详细信息,请参阅其他资源:辅助 API 一节。

进程内与进程外解决方案

Outlook 通过使用与 Outlook 进程在同一前台进程中运行的外接程序,以及在 Outlook 进程之外自己的独立进程中运行的独立解决方案,来实现自动化。通常应使用外接程序通过对象模型、MAPI 或辅助 API(如 HrProcessConvActionForSentItem)与 Outlook 交互。只在必要时才使用进程外解决方案(例如,当您编写了一个使用 Tzmovelib.dll 文件为客户重定 Outlook 日历基准的 MAPI 客户端应用程序时,或者在后台线程中枚举一个文件夹中的众多项目并修改项目属性以优化性能时)。

外接程序是扩展 Outlook 的首选解决方案,因为 Outlook 只信任在该外接程序的 OnConnection(Object, ext_ConnectMode, Object, Array) 事件期间传递给外接程序的 Application 对象。您可以通过从此 Application 对象派生所有对象、属性和方法来避免显示对象模型保护的安全警告。如果该外接程序创建 Application 对象的新实例,则 Outlook 不会信任该对象,即使该外接程序位于受信任外接程序列表中。从 Application 这样的对象派生的任何对象、属性和方法都不受信任,而被阻止的属性和方法将调用安全警告。有关 Outlook 对象模型保护的详细信息,请参阅 Security Behavior of the Outlook Object Model

托管与非托管解决方案

Outlook 通过用托管或非托管语言编写的外接程序和独立应用程序实现自动化。常用托管语言为 C# 和 Visual Basic。C++ 和 Delphi 工具在非托管开发中更常见。在选择托管开发还是非托管开发时,可用的专业知识是一个考虑因素。

如果您的解决方案仅使用对象模型,则您可以考虑通过使用 PIA、Microsoft Visual Studio 2010 中的 Microsoft Office 开发工具或 Microsoft Visual Studio Tools for Office 开发托管解决方案。Visual Studio 中的 Office 开发工具提供项目模板和可视化设计器,这将简化创建自定义用户界面和开发 Office 解决方案的过程。

另一方面,因为 MAPI 比 Microsoft .NET Framework 早几年开发,并且 Microsoft 不为 MAPI 提供托管包装,所以 Microsoft 不支持在托管代码中使用 MAPI。如果您正在使用 MAPI,则必须开发非托管解决方案。有关详细信息,请参阅客户端消息传递开发的支持指南

小范围内应用的 API 和技术

Outlook Social Connector (OSC) 提供程序扩展性和 Office 移动服务 (OMS) 支持扩展 Outlook 中非常特定的场景。OSC 提供程序扩展性支持为社交网络开发提供程序,以允许用户在 Outlook 中查看该社交网络上朋友和活动的最新动态。OMS 支持开发与 Outlook 和 SharePoint 的移动功能以及移动设备集成的 OMS Web 服务。

Outlook 中的 OSC 允许用户在人员窗格中查看来自 Outlook 中某个人的电子邮件、附件和会议请求的集合。在组织环境中,在 Microsoft SharePoint 网站上进行协作的用户可以看到该人员在 SharePoint 网站上的文档更新和其他网站活动。Outlook Social Connector 提供程序扩展性支持为 OSC 开发提供程序以在 Outlook 中同步并显示社交网络更新。根据 Outlook 用户安装的 OSC 提供程序,该用户可以在人员窗格中看到相应社交网络上的照片、状态和活动等更新。适用于 Facebook 的 OSC 提供程序就是使用 OSC 提供程序扩展性的一个示例。有关现有 OSC 提供程序(如 LinkedIn、Myspace 和 Windows Live Messenger)的详细信息,请参阅使用 Outlook 连接到您喜爱的社交网络(该链接可能指向英文页面)

OMS 支持 Outlook 和 SharePoint 中的 OMS 客户端以及 OMS Web 服务开发。通常情况下,移动电话运营商或手机信息内容服务提供商会创建并承载 OMS Web 服务。通过将 Outlook 作为 OMS 客户端,用户可以撰写和发送短信或彩信。OMS 客户端将消息发送给适当的 OMS Web 服务,后者又将消息传递给移动运营商的短信或彩信中心。通过在 SharePoint 中使用 OMS 客户端,用户可以接收短信形式的提示。SharePoint 提示可以通知用户 SharePoint 文档库或列表中发生的任何更改。

此外,在 Outlook 内,用户可以在管理电子邮件帐户的同时并行管理手机信息帐户,并且可以像存储和管理电子邮件项目那样来存储和管理短信或彩信项目。Outlook 将移动电话号码视为一种地址,用户可以使用"记忆式键入"或直接从 Outlook 通讯簿选择姓名向手机信息中添加收件人。用户也可以将电子邮件、约会和会议请求发送到移动设备和其他类似的电子邮件地址。

请参阅其他资源:主要参考、资源和代码示例一节了解有关使用 OSC 提供程序扩展性或 OMS 的详细信息。

结论

若要确定适合您的解决方案的最佳 API 或技术,您必须首先明确您的解决方案的目标:

  • 您希望解决方案所支持的 Outlook 版本。

  • 您的解决方案的高优先级场景,尤其是这些场景是否涉及枚举、筛选或修改包含众多 Outlook 项目的文件夹。

尝试将您的场景与对象模型或 PIA 的决定因素一节中概述的场景匹配。如果您的目标 Outlook 版本的对象模型(或 PIA)支持您的场景,并且您的解决方案不处理包含许多项目的文件夹,则您应将解决方案作为外接程序实施(托管或非托管语言均可)。

如果目标 Outlook 版本的对象模型(或 PIA)不支持您的一些场景,请验证 MAPI 的决定因素或辅助 API 的决定因素两节中的场景是否符合您的需要。如果 MAPI 满足您的需要,您应该在非托管代码中实现您的解决方案。如果辅助 API 能够解决您的场景之一,您可以使用托管代码或非托管代码。

如果您的场景包括在 Outlook 中显示社交网络信息或更新,您应该使用 OSC 提供程序扩展性来创建 COM 可见的 DLL。您可以使用托管或非托管语言执行此操作。

如果您的解决方案使用 MAPI,则您必须在非托管代码(如 C++)中实现它。否则,决定是使用托管代码还是非托管代码来创建解决方案通常取决于您的可用资源和他们的专业知识。至于是将解决方案作为外接程序还是作为独立应用程序实现,可选择外接程序以避免用户不断调用 Outlook 对象模型保护,除非您的场景需要处理包含许多项目的文件夹。在后一种场景下,实施解决方案以作为后台线程运行可以优化 Outlook 性能。

一旦您决定了要在解决方案中使用的 API 或技术,就可以参考其他资源:主要参考、资源和代码示例一节中的额外资源和代码示例以了解详细信息。

其他资源:对象模型和 PIA

以下资源提供了有关使用对象模型和 PIA 的详细信息。

帐户:配置文件中的主 Exchange 帐户

帐户:配置文件中的多个帐户

通讯簿和 Exchange 用户

附件

  • How to: Attach a File to a Mail Item

  • 受 Outlook 2010 限制的附件文件类型

  • Attachment 对象

  • AttachmentSelection 对象

  • 每项目对象的 AttachmentAdd 事件

  • 每项目对象的 AttachmentRead 事件

  • 每项目对象的 AttachmentRemove 事件

  • 每项目对象的 BeforeAttachmentAdd 事件

  • 每项目对象的 BeforeAttachmentPreview 事件

  • 每项目对象的 BeforeAttachmentRead 事件

  • 每项目对象的 BeforeAttachmentSave 事件

  • 每项目对象的 BeforeAttachmentWrite 事件

附件:在检查器中选择

自动化 Outlook

类别

对话

事件

项目:基本属性、字段和窗体

项目:自定义属性

项目:枚举、筛选和排序

项目:标记为任务

查看一些项目对象(如 MailItem 对象)中以下与任务相关的属性:

项目:在资源管理器中选择

其他:名片、规则和视图

安全性

共享

解决方案:解决方案特定的文件夹

解决方案:存储数据

用户界面:自定义窗体区域

用户界面:从 Outlook 2007 起自定义

用户界面:在 Outlook 2010 中自定义

用户界面:解决方案特定的文件夹

其他资源:辅助 API

以下资源提供有关 Outlook 辅助 API 的详细信息。

帐户管理

对项目分类

联系人图片

数据降级

忙/闲状态

项目时效性

重定日历基值

其他资源:主要参考、资源和代码示例

以下资源提供有关主要 Outlook 参考、资源和代码示例的详细信息。

主要参考和资源

代码示例