使用智能警报处理 Outlook 外接程序中的 OnMessageSend 和 OnAppointmentSend 事件

OnMessageSendOnAppointmentSend 事件利用智能警报,允许用户在 Outlook 邮件或约会中选择“发送”后运行逻辑。 借助智能警报,外接程序的用户可以利用机会改进其电子邮件内容、添加缺少的敏感度标签,或在会议邀请中包含重要收件人。

智能警报通过基于事件的激活功能提供。 若要了解如何将外接程序配置为使用此功能、使用其他可用事件、调试加载项等,请参阅 配置 Outlook 外接程序以用于基于事件的激活

注意

OnMessageSendOnAppointmentSend 事件在要求集 1.12 中引入。 其他功能和自定义选项也添加到了后续的要求集。 若要验证 Outlook 客户端是否支持这些事件和功能,请参阅支持的 客户端和平台 以及 演练 中介绍要实现的功能的特定部分。

支持的客户端和平台

下表列出了智能警报功能支持的客户端-服务器组合,包括所需的最低Exchange Server累积更新(如果适用)。 不支持排除的组合。

客户端 Exchange Online Exchange 2019 本地 (累积更新 12 或更高版本) Exchange 2016 本地 (累积更新 22 或更高版本)
Web 浏览器 (新式 UI) 不适用 不适用
新的 Outlook on Windows 不适用 不适用
Windows (经典)
版本 2206 (内部版本 15330.20196) 或更高版本
Mac
版本 16.65 (22082700) 或更高版本
不适用 不适用
Android 不适用 不适用 不适用
iOS 不适用 不适用 不适用

在基于事件的加载项中试用智能警报

若要查看智能警报的运行情况,请尝试 本演练。 你将创建一个加载项,用于在发送邮件之前检查文档或图片是否附加到邮件。

智能警报功能行为和方案

以下部分包括有关发送模式选项和功能在某些方案中的行为的指导。

可用的发送模式选项

将外接程序配置为响应 OnMessageSendOnAppointmentSend 事件时,必须在清单中包含发送模式属性。 其标记因外接程序使用的清单类型而异。

  • 仅外接程序清单:设置 LaunchEvent 元素的 SendMode 属性。
  • Microsoft 365 的统一清单:设置“autoRunEvents”数组中事件对象的“sendMode”选项。

如果加载项实现的条件未满足,或者加载项在事件发生时不可用,则会向用户显示一个对话框,提醒他们在发送邮件之前可能需要执行其他操作。 发送模式属性确定对话框中用户可用的选项。

下表列出了可用的发送模式选项。

发送模式选项规范名称 仅外接程序清单名称 Microsoft 365 名称的统一清单
提示用户 PromptUser promptUser
软块 SoftBlock softBlock
Block

提示

邮箱要求集 1.14 开始,加载项现在可以在运行时替代其发送模式选项。 若要了解详细信息,请参阅 在运行时替代发送模式选项 (可选)

提示用户

如果项目不符合加载项的条件,用户可以在警报中选择“ 仍然发送” ,或解决问题,然后再次尝试发送该项目。 如果加载项处理项目需要很长时间,系统将提示用户停止运行加载项并选择“ 仍然发送”。 例如,如果加载项不可用 (加载加载项) 时出错,则将发送该项目。

提示用户对话框,其中包含“仍然发送”和“不发送”选项。

如果以下任一项适用,请在外接程序中使用 提示用户 选项。

  • 加载项检查的条件不是强制性的,但最好是在发送的邮件或约会中使用。
  • 你想要推荐一个操作,并允许用户决定是否要将其应用于正在发送的邮件或约会。

应用 提示用户 选项的一些方案包括建议将邮件或约会标记为低重要性或高重要性,以及建议对项目应用颜色类别。

软块

如果未配置清单的发送模式属性,则为默认选项。 系统会提醒用户,他们发送的项目不符合加载项的条件,并且必须先解决问题,然后才能再次尝试发送该项目。 但是,如果加载项在 (不可用,例如,加载加载项) 时出错,则会发送该项目。

具有“不发送”选项的软块对话框。

如果希望在发送邮件或约会之前满足条件,但不希望在加载项不可用时阻止用户发送项目,请在外接程序中使用 软阻止 选项。 使用 软阻止 选项的示例方案包括提示用户设置邮件或约会的重要性级别,以及检查在发送项目之前是否应用了适当的签名。

如果出现以下任何情况,则不会发送该项。

  • 该项不符合加载项的条件。
  • 加载项无法连接到服务器。
  • 加载加载项时出错。

带有“不发送”选项的阻止对话框。

如果加载项的条件是必需的,则使用 阻止 选项,即使加载项不可用也是如此。 例如,当要求用户在发送邮件或约会之前将敏感度标签应用到邮件或约会时, 阻止 选项是理想的选择。

加载项不可用

例如,如果在 (发送消息或约会时加载项不可用,则会发生错误,导致加载项无法加载) ,用户将收到警报。 用户可用的选项因应用于加载项的发送模式选项而异。

如果使用 “提示用户 ”或 “软阻止 ”选项,用户可以选择“ 仍然发送 ”以发送项目,而无需加载项进行检查,或 “稍后尝试 ”,让项目在加载项再次可用时进行检查。

对话框提醒用户加载项不可用,并为用户提供立即或稍后发送项目的选项。

如果使用 阻止 选项,则在加载项可用之前,用户无法发送项目。

提醒用户加载项不可用的对话框。仅当加载项再次可用时,用户才能发送该项。

重要

如果实现 发送模式替代 功能的智能警报加载项由于错误而无法完成事件处理,或者在事件发生时不可用,它将使用清单中指定的发送模式选项。

长时间运行的加载项操作

如果加载项运行时间超过 5 秒,但不到 5 分钟,则会提醒用户加载项处理邮件或约会所需的时间比预期要长。

如果使用提示用户选项,用户可以选择“仍然发送”以发送项目,而无需加载项完成其检查。 或者,用户可以选择“ 不发送” 以停止处理加载项。

对话框,提醒用户加载项处理项目所花费的时间超过预期。用户可以选择在不加载项完成其检查的情况下发送项目,或停止加载项处理该项目。

但是,如果使用 软块阻止 选项,则用户将无法发送项目,直到加载项完成处理它。

对话框,提醒用户加载项处理项目所花费的时间超过预期。用户必须等到加载项完成处理项目后才能发送项目。

OnMessageSendOnAppointmentSend 加载项应是短运行且轻型的。 若要避免长时间运行的操作对话框,请在激活 或 OnAppointmentSend 事件之前OnMessageSend使用其他事件处理条件检查。 例如,如果用户需要加密每封邮件或约会的附件,请考虑使用 OnMessageAttachmentsChangedOnAppointmentAttachmentsChanged 事件来执行检查。

加载项超时

如果加载项运行五分钟或更长,它将超时。如果使用提示用户选项,用户可以选择“仍然发送”以发送项目,而无需加载项完成其检查。 或者,用户可以选择“ 不发送”。

提醒用户加载项进程超时的对话框。用户可以选择在不加载项完成其检查的情况下发送项目,或者不发送该项目。

如果使用软块阻止选项,则在加载项完成其检查之前,用户无法发送该项目。 用户必须再次尝试发送项目才能重新激活加载项。

提醒用户加载项进程超时的对话框。用户必须再次尝试发送项目以激活加载项,然后才能发送邮件或约会。

脱机工作模式下的 Outlook 客户端

在 Windows 版 Outlook (经典客户端中,从版本 2310 (内部版本 16913.10000) ) 开始,在 Mac (从版本 16.80 (23121017) ) 开始,实现 软阻止阻止 选项的智能警报加载项只能在 Outlook 客户端联机时处理邮件项目。 如果在发送邮件项目时在 Outlook 客户端中打开“ 工作脱机”模式 ,则不会将该项目保存到 “发件箱” 文件夹中,并提醒用户必须先停用“脱机工作”模式,然后才能尝试发送其项目。

提醒用户在 Outlook 客户端处于脱机工作模式时,智能警报加载项无法处理其邮件项的对话框。

如果智能警报加载项实现了 提示用户 选项,则在打开“脱机工作”模式时,它不会处理邮件项目。 该项目将改为保存到 “发件箱” 文件夹中。

用户离开当前消息

例如,当用户离开他们发送的邮件时, (阅读其收件箱中的邮件) ,智能警报加载项的行为因 Outlook 客户端而异。 选择运行加载项的 Outlook 客户端的选项卡。

在Outlook 网页版或新的 Outlook on Windows 中,用户必须保留在发送的邮件上,直到智能警报加载项完成处理它。 否则,用户离开项目后,加载项将终止智能警报操作,并将草稿保存到邮箱的 “草稿” 文件夹中。 然后,系统会提醒用户,他们必须从 Drafts 文件夹中重新发送邮件,并保留在邮件上,直到加载项完成处理该邮件。

当用户在选择“发送”后导航离开邮件时,在 Outlook 网页版 或新的 Windows 版 Outlook 中向用户显示的对话框。

在使用简单 MAPI 的应用程序中激活智能警报

注意

从版本 2301 (内部版本 17126.20004) 开始,此功能目前仅在经典 Outlook on Windows 中受支持。

用户可以通过某些使用 简单 MAPI 的应用程序发送邮件项目,即使 Outlook 客户端在发送项目时未运行也是如此。 发生这种情况时,任何已安装的智能警报加载项都不会激活以检查邮件项以确保符合性。

为了确保传出项目在发送前满足智能警报加载项的条件,必须在组织中的每个适用计算机上启用“运行 Outlook for Simple MAPI 邮件发送组策略”设置。

设置处于打开状态时的行为

“运行 Outlook for Simple MAPI 邮件发送 ”设置设置为 “启用”时,用户需要在以下方案中发送邮件项目时运行其 Outlook 客户端。

  • 文件通过 Excel、Word 或 PowerPoint 中的“共享>附加副本”选项作为附件发送。

    在 Word 中选择了“改为附加副本”选项。

  • 文件通过 文件资源管理器 中的“发送到>邮件收件人”选项作为附件发送。

    在 文件资源管理器 中选择了“发送给邮件收件人”选项。

  • 文件通过使用简单 MAPI 的应用程序发送,这将打开一个新邮件 Outlook 窗口。

如果用户的 Outlook 客户端在发送邮件时未运行,则会显示一个对话框,通知他们必须打开其客户端才能发送该项目。

发送邮件项目时提醒用户打开 Outlook 客户端的对话框。

关闭或未配置设置时的行为

在组织中将“运行 Outlook for Simple MAPI 邮件发送 ”设置设置为 “已禁用 ”或“ 未配置 ”时,使用实现简单 MAPI 的应用程序发送邮件项目的任何用户都可以执行此操作,而无需激活其智能警报加载项进行合规性检查。

配置组策略设置

默认情况下, “运行 Outlook for Simple MAPI 邮件发送 ”设置设置为 “未配置”。 若要打开设置,请执行以下操作:

  1. 下载最新的管理模板工具
  2. 打开“本地组策略编辑器”(gpedit.msc)。
  3. 导航到“用户配置”\“管理模板”\Microsoft Outlook 2016\“杂项”。
  4. 打开 “运行 Outlook for Simple MAPI 邮件发送 ”设置。
  5. 在显示的对话框中,选择“ 已启用”。
  6. 选择 “确定” 或“ 应用” 以保存更改。

限制

OnMessageSend由于 和 OnAppointmentSend 事件通过基于事件的激活功能受支持,因此相同的功能限制适用于因这些事件而激活的加载项。 有关这些限制的说明,请参阅 基于事件的激活行为和限制

除了这些约束之外,每个 OnMessageSendOnAppointmentSend 事件只能声明在清单中一个实例。 如果需要多个 OnMessageSendOnAppointmentSend 事件,则必须在单独的外接程序中声明每个事件。

虽然可以更改“智能警报”对话框消息和 “不发送 ”按钮以适应加载项方案,但无法自定义以下内容。

  • 对话框的标题栏。 外接程序的名称始终显示在那里。
  • 对话框消息的字体或颜色。 但是,可以使用 Markdown 设置邮件的某些元素的格式。 有关支持元素的列表,请参阅 使用 Markdown 设置对话框消息格式的限制
  • 对话框消息旁边的图标。
  • 提供有关事件处理和进度信息的对话框。 例如,无法更改超时和长时间运行的操作对话框中显示的文本和选项。

如果在对话框中自定义“ 不发送 ”按钮,则只能为其分配任务窗格命令。 不支持函数命令。 如果使用分配的函数命令选择“ 不发送 ”按钮,则会忽略该命令,并且加载项将取消发送操作并关闭对话框。 发生这种情况时,不会显示或记录任何错误。 有关外接程序命令类型的指南,请参阅 外接程序命令的类型

注意

邮箱要求集 1.14 中引入了自定义“不发送”按钮的支持。

在 Outlook 网页版 和新的 Windows 版 Outlook 中:

  • OnAppointmentSend仅当通过“新建事件”选项创建发送的会议时,才会发生该事件。 如果正在发送的会议是通过直接从日历中选择日期和时间创建的,则不会发生该 OnAppointmentSend 事件。
  • 转发会议时,仅当 OnAppointmentSend 组织者转发会议时,才会发生事件。 如果与会者将他们邀请的会议转发到,则不会发生这种情况。

使用 Markdown 设置对话框消息格式的限制

注意

智能警报对话框中对 Markdown 的支持目前在 Outlook 网页版 和 Windows (新的和经典) 中处于预览状态。 不应在生产加载项中使用预览版功能。我们邀请你在测试或开发环境中试用此功能,并欢迎通过 GitHub 提供有关体验的反馈 (请参阅本页末尾的反馈部分) 。

若要在经典 Outlook on Windows 中测试此功能,必须安装版本 2403 (内部版本 17330.10000) 或更高版本。 然后,加入 Microsoft 365 预览体验计划 ,并在 Outlook 客户端中选择 “Beta 频道 ”选项以访问 Office beta 版本。

可以使用 Markdown 设置智能警报对话框消息的格式。 但是,仅支持以下元素。

  • 粗体、斜体或粗体和斜体文本。 支持 星号 (*) 和下划线 (_) 格式

    event.completed({
      allowEvent: false,
      ...
      errorMessageMarkdown: "**Important**: Apply the appropriate sensitivity label to your message before sending."
    });
    

    带有粗体文本的示例智能警报对话框。

  • 项目符号列表或无序列表。 若要在列表中创建项目,请以短划线 () - 或星号 (*) 开头,添加内容,然后追加 \r 以表示项目完成。

    event.completed({
      allowEvent: false,
      ...
      errorMessageMarkdown: "Your email doesn't meet company guidelines.\n\nFor additional assistance, contact the IT Service Desk:\n\n- Phone number: 425-555-0102\r- Email: it@contoso.com\r- Website: [Contoso IT Service Desk](https://www.contoso.com/it-service-desk)\r"
    });
    

    包含项目符号列表的示例智能警报对话框。

  • 编号列表或有序列表。 若要在列表中创建项,请以数字开头,后跟句点,添加内容,然后追加 \r 以表示项完成。 列表的第一项必须以数字 1 开头 (1.) ,后续数字必须按数字顺序排列。

    event.completed({
      allowEvent: false,
      ...
      errorMessageMarkdown: "Help your recipients know your intentions when you send a mail item. To set the sensitivity level of an item:\n\n1. Select **File** > **Properties**.\r2. From the **Sensitivity** dropdown, select **Normal**, **Personal**, **Private**, or **Confidential**.\r3. Select **Close**.\r"
    });
    

    包含编号列表的示例智能警报对话框。

  • 链接。 若要创建链接,请将链接文本括在方括号 ([]) ,然后将 HTTPS URL 括在括号 (()) 。 必须提供 HTTPS URL,否则它不会呈现为用户可以从对话框中选择的链接。 不支持尖括号格式 (<>) 。

    event.completed({
      allowEvent: false,
      ...
      errorMessageMarkdown: "Need onsite assistance on the day of your meeting? Visit the [Contoso Facilities](https://www.contoso.com/facilities/meetings) page to learn more."
    });
    

    包含链接的示例智能警报对话框。

  • 新行。 使用 \n\n 创建新行。

    event.completed({
      allowEvent: false,
      ...
      errorMessageMarkdown: "Add a personalized user avatar to your signature today!\n\nTo customize your signature, visit [Customize my email signature](https://www.fabrikam.com/marketing/customize-email-signature)."
    });
    

    示例智能警报对话框,其中包含消息中的新行。

提示

若要转义邮件中的字符(如星号),请在字符前面添加反斜杠 (\) 。

最佳做法

智能警报功能可确保所有传出邮件项都符合组织的信息保护策略,并通过建议帮助用户改进其邮件。 若要确保加载项始终为用户提供流畅高效的发送体验,请遵循以下准则。

  • 不要让加载项进一步延迟发送操作。 智能警报加载项必须是短运行且轻型的。 避免使用大量验证重 OnMessageSend 载 和 OnAppointmentSend 事件处理程序。 若要防止出现这种情况,请在发生其他事件(如 OnMessageRecipientsChangedOnMessageAttachmentsChanged 事件)时预处理信息。 若要确定外接程序可以响应哪些事件,请参阅 为基于事件的激活配置 Outlook 外接程序的“支持的事件”部分。
  • 不要实现其他对话。 防止用户使用过多对话来压倒用户。 相反,自定义“智能警报”对话框中的文本以传达信息。 如果需要,还可以 自定义“ 不发送 ”按钮 ,通过任务窗格为用户提供其他信息和功能。
  • 在组织中启用适当的组策略设置。 若要确保智能警报加载项在每个邮件项目(包括使用实现简单 MAPI 的应用程序发送的邮件项目)上激活,请配置 “运行 Outlook for Simple MAPI 发送 ”设置。 若要详细了解此设置,请参阅 在使用简单 MAPI 的应用程序中激活智能警报

调试加载项

有关如何对智能警报加载项进行故障排除的指南,请参阅 排查基于事件的加载项和垃圾邮件报告加载项的问题

部署到用户

与其他基于事件的外接程序类似,使用智能警报功能的加载项必须由组织的管理员部署。 有关如何通过Microsoft 365 管理中心部署加载项的指南,请参阅配置 Outlook 外接程序进行基于事件的激活中的“部署到用户”部分。

重要

如果清单的 发送模式属性 设置为 软阻止提示用户 选项,则使用智能警报功能的加载项只能发布到 AppSource。 如果加载项的发送模式属性设置为 阻止,则只能由组织的管理员部署,因为它将失败 AppSource 验证。 若要详细了解如何将基于事件的外接程序发布到 AppSource,请参阅 基于事件的 Outlook 加载项的 AppSource 列表选项

智能警报与发送功能之间的差异

虽然智能警报和 即时发送功能 使用户有机会在发送消息和会议邀请之前改进其消息和会议邀请,但智能警报是一项较新的功能,可让你在提示用户采取进一步操作的方式方面更加灵活。 下表概述了这两个功能之间的主要差异。

属性 智能警报 On-send
支持的最低要求集 邮箱 1.12 Mailbox 1.8
支持的 Outlook 客户端
  • Windows (新的和经典)
  • Web 浏览器 (新式 UI)
  • Mac (新的 UI)
  • Windows (经典)
  • Web 浏览器 (新式和经典 UI)
  • Mac (新的和经典 UI)
支持的事件 仅加载项清单
  • OnMessageSend
  • OnAppointmentSend

Microsoft 365 的统一清单
  • “messageSending”
  • “appointmentSending”
XML 清单
  • ItemSend

Microsoft 365 的统一清单
  • 不支持
清单扩展属性 仅加载项清单
  • LaunchEvent

Microsoft 365 的统一清单
  • "autoRunEvents"
XML 清单
  • Events

Microsoft 365 的统一清单
  • 不支持
支持的发送模式选项
  • 提示用户
  • 软块

若要详细了解每个选项,请参阅 可用的发送模式选项
阻止
加载项中支持的最大事件数 OnMessageSend 个事件和一个 OnAppointmentSend 事件。 一个 ItemSend 事件。
加载项部署 如果外接程序的发送模式属性设置为 软阻止提示用户 选项,则可以将其发布到 AppSource。 否则,加载项必须由组织的管理员部署。 加载项无法发布到 AppSource。 它必须由组织的管理员部署。
加载项安装的其他配置 将清单上传到Microsoft 365 管理中心后,无需进行其他配置。 根据组织的合规性标准和使用的 Outlook 客户端,必须配置某些邮箱策略才能安装加载项。

另请参阅