使用邮箱导入和导出 API 导入 Exchange 邮箱项目

邮箱导入和导出 API 允许使用 FastTransfer 流 (FTS) 格式导入 Exchange 邮箱项目。 项目可以还原到同一邮箱或不同的邮箱。

本文介绍执行导入过程所需的两个步骤,并为每个步骤提供了一个示例。 成功上传项目后,你会收到一个包含 itemIdchangeKey 的响应,可以保存以供以后使用。

步骤 1:创建导入会话

创建导入会话 以将项目导入邮箱的文件夹中。

成功的作在响应正文中返回响应 HTTP 201 Created 代码和新的 mailboxItemImportSession 对象,该对象包含一个不透明的 importUrl ,你可以在后续 POST作中使用该 url 将项目上传到文件夹中。

响应中的 mailboxItemImportSession 对象还包括 expirationDateTime 属性,该属性指示 importUrl 属性值中嵌入的身份验证令牌的到期日期和时间。 在此时间过后, importUrl 将过期并被删除。

权限

请确保请求 MailboxItem.ImportExport 委托的权限或 MailboxItem.ImportExport.All 应用程序权限来创建 mailboxItemImportSession

在新 mailboxItemImportSessionimportUrl 属性中返回的不透明 URL 经过预身份验证,并包含域中后续 POST 查询的https://outlook.office365.com相应授权令牌。 不要为 POST作自定义此 URL。

示例:创建邮箱项目导入会话

以下示例演示如何创建 mailboxItemImportSession 对象。

请求

以下示例显示了一个请求。

POST https://graph.microsoft.com/beta/admin/exchange/mailboxes/MBX:e0643f21@a7809c93/createImportSession

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-type: application/json
Content-length: 232

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.mailboxItemImportSession",
    "importUrl": "https://outlook.office365.com/api/gbeta/Mailboxes('MBX:e0643f21@a7809c93')/importItem?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IjFTeXQ1b",
    "expirationDateTime": "2024-10-17T19:00:48.1052906Z"
}

步骤 2:使用导入 URL 上传项目

若要将项目导入邮箱,请在 mailboxItemImportSession 对象的 importUrl 属性中对上一步返回的 URL 发出 POST 请求。

按照请求正文部分中所述指定 请求正文

请求标头

由于初始不透明 URL 是预身份验证的,并且包含相应授权令牌,用于该导入会话的后续查询,因此不要为此作指定 Authorization 请求标头。

请求正文

参数 类型 说明
FolderId String 要将项导入到的文件夹的 ID。 必填。
模式 String 指定导入模式可以是 createupdate。 必填。

  • create:创建新项。 如果在请求正文中指定 ItemIdChangeKey ,则会导致错误。
  • update:汇报现有项。 请求正文中需要 ItemIdChangeKey 才能进行更新。 如果 ItemIdChangeKey 的组合与文件夹中的任何现有项不匹配,则作将失败。
数据 String 以 base64 编码 的 FTS 格式表示项的数据。 必填。
ItemId String 项的唯一标识符。 在 期间 update是必需的。
ChangeKey String 项的版本。 在 期间 update是必需的。

响应

如果成功,此作将在 200 OK 响应正文中返回响应代码和 importMailboxItemResponse 对象。

示例

示例 1:使用导入作在邮箱中创建项目

以下示例演示如何在 create 模式下将新项目导入邮箱。

请求

以下示例显示了一个请求。

POST https://outlook.office365.com/api/gbeta/Mailboxes('MBX:e0643f21@a7809c93')/importItem?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IjFTeXQ1b

{
    "FolderId": "EDSVrdi3lRAAEED0yTAAA=",
    "Mode": "create",
    "Data": "AQAAAAgAAAAAAAAAAQAAAAMAAAAYAAAAAQAAAAcDAgAAAAAAwAAAAAAAAEYAJACABAAAAAYAAAAUD9aRhhcCAAAAwHsAAAMAFwABAAAAsIQaABIAAABJAFAATQAuA"
}
响应

以下示例显示了相应的响应。

HTTP/1.1 200 OK
Content-type: application/json
Content-length: 232

{
    "@odata.context": "https://outlook.office365.com/api/gbeta/$metadata#microsoft.graph.importMailboxItemResponse",
    "itemId": "EDSVrdi3lRAAFSX03NAAA=",
    "changeKey": "kNnynYavKEihA0la3Yt5UQABUftGQg=="
}

示例 2:使用导入作更新邮箱中的现有项目

以下示例演示如何在 update 模式下将现有项目的新版本导入邮箱。

请求

以下示例显示了一个请求。

POST https://outlook.office365.com/api/gbeta/Mailboxes('MBX:e0643f21@a7809c93')/importItem?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IjFTeXQ1b

{
    "FolderId": "EDSVrdi3lRAAEED0yTAAA=",
    "Mode": "update",
    "Data": "AQAAAAgAAAAAAAAAAQAAAAMAAAAYAAAAAQAAAAcDAgAAAAAAwAAAAAAAAEYAJACABAAAAAYAAAAUD9aRhhcCAAAAwHsAAAMAFwABAAAAsIQaABIAAABJAFAATQAuA",
    "ItemId" : "EDSVrdi3lRAAFSX03NAAA=",
    "ChangeKey": "kNnynYavKEihA0la3Yt5UQABUftGQg==" 
}
响应

以下示例显示了相应的响应。

HTTP/1.1 200 OK
Content-type: application/json
Content-length: 232

{
    "@odata.context": "https://outlook.office365.com/api/gbeta/$metadata#microsoft.graph.importMailboxItemResponse",
    "itemId": "EDSVrdi3lRAAFSX03NAAA=",
    "changeKey": "kNnynYavKEihA0la3Yt5UQABUftGQf=="
}