Office 365 中的可操作邮件入门

重要

由于服务升级,具有 全局 范围的新可操作消息提供程序的加入将暂时暂停到 2024 年 6 月 30 日。 现有的全球范围提供程序以及组织和测试范围提供程序的加入不受影响。 有关详细信息,请参阅 可操作消息的常见问题解答

支持的方案

在以下方案中支持通过电子邮件发送可操作邮件。

  • 收件人必须是个人,不能是组。
  • 收件人必须在邮件上可见。 不要将收件人置于“密件抄送”字段中。
  • 收件人必须在 Outlook.com 或 Office 365 的 Exchange Online 上具有邮箱。

注意

Office 365 管理员能够通过 Set-OrganizationConfig cmdlet 禁用可操作邮件。 如果未显示可操作邮件,请咨询管理员,以确保你的组织已启用此功能。

创建可操作邮件卡

我们从创建可操作邮件卡片开始。 我们将从简单的内容开始,即一个包含 Action.Http 操作和 Action.OpenUrl 操作的简单卡片。 我们将使用可操作消息Designer来设计卡。

重要

本主题中的示例卡片标记省略了 originator 属性。 这适用于收件人与发件人是同一人的测试场景。 向其他人发送可操作邮件时,必须将 originator 属性设置为可操作电子邮件开发人员仪表板生成的有效提供程序 ID。 如果向其他人发送可操作邮件时将此属性留空,将会导致卡片被删除。

转到可操作消息Designer并粘贴以下 JSON:

{
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [
    {
      "type": "TextBlock",
      "text": "Visit the Outlook Dev Portal",
      "size": "large"
    },
    {
        "type": "TextBlock",
        "text": "Click **Learn More** to learn more about Actionable Messages!"
    },
    {
      "type": "Input.Text",
      "id": "feedbackText",
      "placeholder": "Let us know what you think about Actionable Messages"
    }
  ],
  "actions": [
    {
      "type": "Action.Http",
      "title": "Send Feedback",
      "method": "POST",
      "url": "https://...",
      "body": "{{feedbackText.value}}"
    },
    {
      "type": "Action.OpenUrl",
      "title": "Learn More",
      "url": "https://learn.microsoft.com/outlook/actionable-messages"
    }
  ]
}

在Designer中随意尝试这个简单示例。 有关可用字段的详细信息,请参阅自适应卡参考。 拥有满意的卡片后,可以继续发送它。

通过电子邮件发送可操作邮件

重要

可以使用可操作消息Designer来设计和测试可操作消息,以便向自己发送可操作消息。 此外,可以使用 Office 365 SMTP 服务器向自己发送可操作邮件。 在使用可操作邮件开发人员仪表板注册之前,将无法向任何其他用户发送可操作邮件。

若要在电子邮件中嵌入可操作邮件卡片,需要将该卡片封装到 <script> 标记。 然后将 <script> 标记插入电子邮件 HTML 正文的 <head> 中。

注意

由于 JSON 卡片必须包装在 <script> 标记中,可操作电子邮件的正文必须为 HTML。 不支持纯文本邮件。

  1. 添加 hideOriginalBody 属性,以控制对电子邮件正文的处理。 在此示例中我们将该属性设置为 true,确保不显示正文。

    {
      "type": "AdaptiveCard",
      "version": "1.0",
      "hideOriginalBody": true,
      "body": [
        {
          "type": "TextBlock",
          "text": "Visit the Outlook Dev Portal",
          "size": "large"
        },
        {
            "type": "TextBlock",
            "text": "Click **Learn More** to learn more about Actionable Messages!"
        },
        {
          "type": "Input.Text",
          "id": "feedbackText",
          "placeholder": "Let us know what you think about Actionable Messages"
        }
      ],
      "actions": [
        {
          "type": "Action.Http",
          "title": "Send Feedback",
          "method": "POST",
          "url": "https://...",
          "body": "{{feedbackText.value}}"
        },
        {
          "type": "Action.OpenUrl",
          "title": "Learn More",
          "url": "https://learn.microsoft.com/outlook/actionable-messages"
        }
      ]
    }
    
  2. 将生成的 JSON 封装到 application/adaptivecard+json 类型的 <script> 标记中。

    注意

    如果正在使用旧版邮件卡片格式而不是自适应卡片格式,<script> 标记类型必须为 application/ld+json

    <script type="application/adaptivecard+json">{
      "type": "AdaptiveCard",
      "version": "1.0",
      "hideOriginalBody": true,
      "body": [
        {
          "type": "TextBlock",
          "text": "Visit the Outlook Dev Portal",
          "size": "large"
        },
        {
            "type": "TextBlock",
            "text": "Click **Learn More** to learn more about Actionable Messages!"
        },
        {
          "type": "Input.Text",
          "id": "feedbackText",
          "placeholder": "Let us know what you think about Actionable Messages"
        }
      ],
      "actions": [
        {
          "type": "Action.Http",
          "title": "Send Feedback",
          "method": "POST",
          "url": "https://...",
          "body": "{{feedbackText.value}}"
        },
        {
          "type": "Action.OpenUrl",
          "title": "Learn More",
          "url": "https://learn.microsoft.com/outlook/actionable-messages"
        }
      ]
    }
    </script>
    
  3. 生成 HTML 文档以显示电子邮件正文,并将 <script> 标记包含在 <head> 中。

    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <script type="application/adaptivecard+json">{
        "type": "AdaptiveCard",
        "version": "1.0",
        "hideOriginalBody": true,
        "body": [
          {
            "type": "TextBlock",
            "text": "Visit the Outlook Dev Portal",
            "size": "large"
          },
          {
            "type": "TextBlock",
            "text": "Click **Learn More** to learn more about Actionable Messages!"
          },
          {
            "type": "Input.Text",
            "id": "feedbackText",
            "placeholder": "Let us know what you think about Actionable Messages"
          }
        ],
        "actions": [
          {
            "type": "Action.Http",
            "title": "Send Feedback",
            "method": "POST",
            "url": "https://...",
            "body": "{{feedbackText.value}}"
          },
          {
            "type": "Action.OpenUrl",
            "title": "Learn More",
            "url": "https://learn.microsoft.com/outlook/actionable-messages"
          }
        ]
      }
      </script>
    </head>
    <body>
    Visit the <a href="https://learn.microsoft.com/outlook/actionable-messages">Outlook Dev Portal</a> to learn more about Actionable Messages.
    </body>
    </html>
    
  4. 通过 SMTP 发送将 HTML 作为正文的电子邮件。

发送邮件

有关发送邮件的示例,请参阅下列内容。

执行操作

有关执行操作的示例,请参阅以下部分。

  • Hello 可操作邮件:包含一键式 Azure 部署按钮的示例项目。 此示例是简单的端到端可操作邮件解决方案,能够在 10 分钟内正常运行,可以参考它生成生产操作终结点。

故障排查工具

  • 可操作邮件调试器:一个 Outlook 加载项,便于开发人员检查可操作邮件中的邮件卡有效负载,并确定导致邮件卡无法呈现的原因。