将邮件和附件拖放到 Outlook 加载项的任务窗格中

拖放功能允许用户将邮件和文件附件从其邮箱直接无缝传输到加载项的任务窗格中。 使用拖放功能,用户无需离开 Outlook 客户端即可执行以下作。

  • 将文件导入文档管理界面以进行处理或存档。
  • 将客户记录和通信日志上传到客户关系管理 (CRM) 系统进行跟踪。
  • 将文件转换为其他格式。

支持的 Outlook 客户端和图面

下表概述了支持拖放功能的 Outlook 客户端以及用于实现该功能的 API。

Outlook 客户端 支持拖放 实现方法 支持的 Outlook 图面
Outlook 网页版 支持 Office.js API (Office.EventType.DragAndDropEvent)
  • 约会Compose
  • 约会读取
  • 邮件撰写
  • 邮件阅读
Windows 上的新 Outlook 支持 Office.js API (Office.EventType.DragAndDropEvent)
  • 约会Compose
  • 约会读取
  • 邮件撰写
  • 邮件阅读
Windows 上的经典 Outlook 支持 HTML 拖放 API
  • 约会Compose
  • 约会读取
  • 邮件撰写
  • 邮件阅读
Mac 版 Outlook 支持 HTML 拖放 API
  • 约会Compose
  • 约会读取
  • 邮件撰写
  • 邮件阅读
iOS 版 Outlook 不支持 不适用 不适用
Android 版 Outlook 不支持 不适用 不适用

有关支持哪些文件类型和方案的信息,请参阅 功能行为和限制

实现拖放功能

当鼠标指针进入加载项的任务窗格时,将发生拖放事件。 处理拖放事件因 Outlook 客户端而异。 选择适用客户端的选项卡。

注意

本部分假定已为 Outlook 加载项实现任务窗格。 有关任务窗格的信息,请参阅 外接程序命令。 若要创建已实现任务窗格的外接程序示例,请按照 Outlook 快速入门进行作。

在 Outlook 网页版 和新的 Windows 版 Outlook 中,使用 Office.context.mailbox.addHandlerAsync 方法在 JavaScript 文件中为 Office.EventType.DragAndDropEvent 事件创建处理程序。 DragAndDropEvent事件发生时,处理程序会收到 DragAndDropEventArgs 对象,以便确定用户何时在任务窗格上拖动项、何时将项拖放到任务窗格中,以及与该项关联的数据。 根据是否发生了拖放事件,对象的 dragAndDropEventData 属性 DragAndDropEventArgs 将返回 DragoverEventDataDropEventData 对象。 这些对象提供有关鼠标指针的位置以及要传输到任务窗格的数据的信息。

将消息拖动到任务窗格时,它们将作为.eml文件删除。 已删除的附件将保留其当前格式。 有关支持类型的列表,请参阅 支持的项类型

以下示例演示如何实现拖放功能。

// Handle the DragAndDropEvent event.
Office.context.mailbox.addHandlerAsync(
    Office.EventType.DragAndDropEvent,
    (event) => {
        console.log(`Event occurred: ${event.type}`);
        const eventData = event.dragAndDropEventData;

        // Get the file name and the contents of the items dropped into the task pane.
        if (eventData.type == "drop") {
            const files = eventData.dataTransfer.files;
            files.forEach((file) => {
                const content = file.fileContent;
                const name = file.name;

                // Add operations to process the item here, such as uploading the file to a CRM system.
            });
        }
    },
    (asyncResult) => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.error("Failed to add event handler:", asyncResult.error.message); 
            return;
        }

        console.log("Event handler added successfully.");
    }
);

试用

尝试使用交互式示例,查看拖放功能在作中。 安装 Outlook 加载项Script Lab,然后运行“将项目拖放到任务窗格”示例。

若要了解详细信息,请参阅使用 Script Lab 探索 Office JavaScript API

功能行为和限制

支持的项类型

拖放功能支持以下文件类型。

  • 消息:采用.eml或.msg格式的消息。 此外,还支持以下类型的加密消息。
    • 使用 S/MIME (安全/多用途 Internet 邮件扩展) 协议加密的邮件。
    • 受信息权限管理保护的消息 (IRM) ,敏感度标签将 “允许编程访问 自定义策略”选项设置为 true
  • 附件:Outlook 支持的文件类型。 有关指导,请参阅 Outlook 中阻止的附件

提示

有关 HTML 拖放 API 支持的数据类型的信息,请参阅 建议的拖动类型

支持的方案

下表确定哪些方案支持 Outlook 中的拖放功能。

应用场景 支持拖放
将邮件或附件从 阅读窗格 拖放到同一窗口中加载项的任务窗格 支持
将邮件或附件从阅读窗格拖放到另一窗口中打开的任务窗格 支持
在不同窗口中打开邮件时,将邮件中包含的附件拖放到 Outlook 客户端主窗口中打开的任务窗格 支持
当邮件在不同的窗口中打开时,将邮件中包含的附件拖放到同一窗口中的任务窗格 支持
同时拖放多个附件 支持
同时拖放多个邮件 支持
同时拖放多个邮件和附件的组合 不支持
将文件从任务窗格拖放到邮箱 不支持
将文件从桌面拖放到 Outlook 中的加载项任务窗格 取决于使用的拖放 API。
  • Office.js API:不支持
  • HTML 拖放 API:支持
从另一个邮箱拖放项目 不支持
在 Outlook 客户端主窗口的两个实例之间拖放项目 不支持
在不同的 Outlook 客户端之间拖放项目 不支持

限制

在加载项中实现拖放时,请注意以下限制。

  • 如果用户在正在处理拖动到加载项任务窗格的项目时导航到另一个邮件项,则行为因是否固定任务窗格而异。 如果任务窗格已固定,则不会中断处理。 否则,处理失败。 建议包括进度指示器和显示错误消息,以增强用户意识。
  • 邮件中的内联图像附件和链接无法放入任务窗格中。 有关支持项的指南,请参阅 支持的项类型

另请参阅