通过使用 Exchange 中的 EWS 导出和导入项目
了解如何使用 Exchange 中的 EWS 托管 API 或 EWS 导出和导入约会、电子邮件、联系人、任务和其他邮箱项目。
Exchange 是重要信息的金矿:电子邮件、联系人、任务和日历是组织职能的核心。 EWS 使你能够通过三种不同的方法导出和导入核心项类型:
Exchange 项目类型。 建议使用此方法向其他系统和文件导入和导出项。
项级功能仅 (EWS) 。 建议使用此选项从一个 Exchange 服务器或邮箱导出或复制,然后导入到另一个 Exchange 服务器或邮箱。
采用常见标准文件格式(如 iCalendar 和 vCard)格式的 MIME 流。 由于属性集有限且 MIME 转换成本高昂,因此建议仅使用导入或导出少量数据的方法。
重要
EWS 不用于邮箱备份和还原。 若要备份和还原数据库,请使用 备份和还原 API。 另请参阅 TechNet 上的 备份、还原和灾难恢复 。
表 1. 导出和导入联系人、电子邮件和日历项目
任务 | EWS 托管的 API 方法 | EWS 操作 | 注意 |
---|---|---|---|
导出具有 指定属性集的联系人、电子邮件、任务或日历项的副本。 |
Contact.Bind EmailMessage.Bind Appointment.Bind Task.Bind |
GetItem |
如果要将邮箱项目导出到另一个非 Exchange 系统或文件 (包括 vCard 和 iCal 文件类型) ,则建议使用此选项。 由于你可以控制导出的属性集,并且因为 Exchange 服务器的性能更好,所以这通常是最佳选择。 根据邮箱项目上设置的属性,以及应用程序是否知道所有非架构化属性标识符 (可能在项目上设置的扩展属性) ,此选项可能不会生成完全保真副本。 这些方法和操作提供项的架构化属性集以及任何请求的扩展属性。 如果知道在项上设置的扩展属性, 则 Bind 方法或 GetItem 操作只能提供项的完全保真导出。 可以请求所有已知的 扩展属性 以启用完全保真度。 提示:可以使用 EWS 托管 API 中的跟踪功能来获取导出项的 XML 表示形式。 有关详细信息,请参阅 将项导出为自定义格式。 |
导入具有 指定属性集的联系人、电子邮件、任务或日历项的副本。 |
Contact.Save EmailMessage.Save Appointment.Save Task.Save |
CreateItem |
建议使用此选项将邮箱项目导入 Exchange。 可能必须对某些项类型设置特殊属性才能维护导入项的状态。 由于某些属性仅由 Exchange 设置,而不是由客户端设置,因此并不总是可以具有完全保真导入。 例如,不能将与会者的会议导入邮箱,因为 Exchange 设置组织者和与会者之间的关系。 此关系只能由组织者发送和与会者接收和响应会议请求来建立。 Exchange 中的约会对象可以具有复杂的关系和设置。 包含与会者的约会 (会议) 具有将会议组织者和会议与会者联系在一起的设置。 导出和导入约会时,不会维护这些设置。 不支持以编程方式直接在约会上重新建立会议组织者/与会者关系。 重新建立这些关系的一个选项是在导入后执行后处理,然后让组织者重新发送会议,让与会者接受会议。 可以使用 Exchange 模拟为组织者和与会者发出呼叫。 应在导入之前更改 Appointment 对象的 UID 属性,以避免会议与邮箱中的其他会议错误关联。 |
以完全保真的方式导出联系人、电子邮件、任务或日历项的副本。 |
不适用 |
ExportItems |
这是将要导入的邮箱项目导出回 Exchange 邮箱的最佳选择。 还可以使用此选项在邮箱之间复制项目。 ExportItems 操作提供一个不透明的流,该流表示可用于在邮箱之间移动信息的项目。 可以将 ExportItems 与 GetItem 操作配合使用,以创建索引以查找其他系统中的项。 无法更改导出流。 有关详细信息,请参阅 以完全保真度导出项。 |
以完全保真的方式导入联系人、电子邮件、任务或日历项的副本。 |
不适用 |
UploadItems |
这是导入 ExportItems 操作导出的项目的唯一选项。 |
将联系人、电子邮件或日历项目的副本导出为常见文件类型的 MIME 流。 |
Contact.Bind EmailMessage.Bind Appointment.Bind |
GetItem |
可以使用 MimeContent 属性获取项的 MIME 流表示形式。 这将提供项上所有属性的基本子集。 最佳做法是仅对一次性操作使用 MIME 流。 不要依赖 MIME 来频繁地导入/导出项目,因为 Exchange 对 MIME 执行内容转换,这可能会影响性能。 联系人 MIME 流是 vCard (.vcf) 文件。 根据在联系人上设置的属性,这可能不会生成完全保真副本。 请注意,无法使用 vCard MIME 流导入联系人。 若要了解详细信息,请参阅 将联系人导出到 vCard 文件中。 EmailMessage MIME 流是 .eml 文件。 .eml 格式很方便,因为 Outlook 和其他电子邮件客户端可以识别它。 还可以使用 MIME 流创建 .mht 文件,这很方便,因为许多浏览器都可以使用该文件类型。 EWS 不提供用于将电子邮件导出到 .msg 文件的 .msg 文件流。 用于导出 .msg 文件的选项是 构造 。来自EmailMessage.Bind 方法或 GetItem 操作调用的结果的 MSG 文件,或使用调用 EWS 并从结果构造 .msg 文件的第三方 API。 有关详细信息,请参阅 将电子邮件导出为 .eml 文件。 约会 MIME 流是 iCal (.ics) 文件。 .ics 格式很方便,因为 Outlook 和其他电子邮件客户端可以识别它。 这不是导出会议的可行选项,因为 MIME 流中未提供与会者信息。 附件和其他属性可能不包括在 MIME 流中。 请考虑从 Appointment 对象或 GetItem 操作返回的 XML 构造 iCal 格式。 这样,可以使用 iCal 文件中的扩展属性 (“X”属性) 捕获更多 Exchange 属性。 还可以在 XML 窗体中导出约会。 调用 GetItem 操作并将 XML 保存在系统中。 还可以使用 EWS 托管 API 中的 跟踪功能 来捕获要放入 XML 数据库中的 XML。 有关详细信息,请参阅 将约会导出为 iCal 文件。 |
将电子邮件或日历项目的副本导入为常见文件类型的 MIME 流。 |
EmailMessage.Save Appointment.Save |
CreateItem |
可以在 EmailMessage 或 Appointment 对象上使用 MimeContent 属性导入 .eml 或 .ics 文件。 如果电子邮件不是草稿,则需要设置 PidTagMessageFlags (0x0E07) 扩展属性。 不能使用此方法导入会议。 |
使用 EWS 导出和导入项的替代方法
其他选项可用于向 Exchange 邮箱和从 Exchange 邮箱中导入项目。 以下是设计导入和导出策略时要考虑的一些想法:
使用 PowerShell 调用 EWS 并将输出格式化为.csv文件。
使用实现 MAPI 的第三方库导出和导入项目。 将 EWS 转换为 .msg 文件的第三方库也可用。
使用 Exchange 命令行管理程序以及 MailboxImportRequest 和 MailboxExportRequest cmdlet 满足邮箱导入和导出请求。
使用 Outlook 的导入选项 导入和导出项目。