你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:从应用服务发送电子邮件及调用其他业务流程

本教程介绍如何将应用服务应用与业务流程相集成。 Web 应用方案经常使用此类操作,例如:

  • 发送交易确认电子邮件
  • 将用户添加到 Facebook 组
  • 连接到 SAP、Salesforce 等第三方系统
  • 交换标准的 B2B 消息

在本教程中,你将在应用服务应用中使用 Azure 逻辑应用通过 Gmail 发送电子邮件。 还可以通过其他方式(例如,语言框架提供的 SMTP 配置)从 Web 应用发送电子邮件。 但是,Azure 逻辑应用可为应用服务应用带来更多强大功能,且不会增大代码的复杂性。 Azure 逻辑应用为最常见的业务集成提供简单的配置界面,应用随时可以使用 HTTP 请求来调用它们。

先决条件

将采用所选语言框架的某个应用部署到应用服务。 若要遵循教程部署示例应用,请参阅:

创建逻辑应用

  1. Azure 门户中,按照创建示例消耗型工作流中的说明,创建消耗型逻辑应用资源。 当包含常见触发器和模板库的页面打开时,返回到本教程。

  2. 在“从常用触发器开始”部分下,选择名为“收到 HTTP 请求时”的触发器。

    显示设计器的初始页面的屏幕截图,其中突出显示了“收到 HTTP 请求时”对话框。

  3. 在触发器信息框中,选择“使用示例有效负载生成架构”。

    显示已选中“收到 HTTP 请求时”对话框和“使用示例有效负载生成架构”选项的屏幕截图。

  4. 将以下示例 JSON 复制到文本框中,然后选择“完成”。

    {
        "task": "<description>",
        "due": "<date>",
        "email": "<email-address>"
    }
    

    随即会为所需的请求数据生成架构。 在实践中,可以仅捕获应用程序代码生成的实际请求数据,并让 Azure 为你生成 JSON 架构。

  5. 在工作流设计器工具栏上,选择“保存”。

    现在可以查看 HTTP 请求触发器的 URL。 选择“复制”图标以复制该 URL 供稍后使用。

    屏幕截图,突出显示了用于复制 HTTP 请求触发器的 URL 的复制图标。

    此 HTTP 请求定义是要在此逻辑应用工作流中执行的任何操作(通过 Gmail 发送电子邮件或其他任何操作)的触发器。 稍后你将在应用服务应用中调用此 URL。 有关请求触发器的详细信息,请参阅 HTTP 请求/响应参考

  6. 在触发器下,选择“新建步骤”。 在“选择操作”搜索框中,选择“所有” 。

  7. 在搜索框中输入“Gmail”。 找到并选择名为“发送电子邮件 (V2)”的操作。

    提示

    可以搜索其他类型的集成,例如 SendGrid、MailChimp、Microsoft 365 和 SalesForce。 有关详细信息,请查看适用于 Azure 逻辑应用的托管连接器

  8. Gmail 操作中,选择“登录”以验证对要从中发送电子邮件的 Gmail 帐户的访问权限。

    显示登录 Gmail 帐户的 Gmail 操作的屏幕截图。

  9. 登录后,在“收件人”框内选择,这会自动打开动态内容列表。 在此列表中,在“收到 HTTP 请求时”操作的旁边,选择“查看更多”。

    显示“收到 HTTP 请求时”操作旁边的“查看更多”的屏幕截图。

    现在,应会看到前面使用的示例 JSON 数据中的三个属性。 此步骤使用 HTTP 请求中的这些属性来构造电子邮件。

  10. 对于“收件人”字段值,请选择“电子邮件”。 如果需要,请选择“添加动态内容”来关闭动态内容列表。

    显示电子邮件选项的屏幕截图,其中突出显示了“添加动态内容”选项。

  11. 在“添加新参数”列表中,选择“主题”和“正文”。

  12. 在“主题”框中选择,以同样的方式选择“任务”。 在光标仍处于“主题”框中时,键入“已创建”。

  13. 在“正文”框中选择,以同样的方式选择“到期时间”。 将光标移到“到期时间”的左侧,键入“此工作项的到期时间”。

    提示

    如果要直接在电子邮件正文中编辑 HTML 内容,请在设计器工具栏上选择“代码视图”。 确保你保留动态内容代码即可(例如 @{triggerBody()?['due']}

    显示代码视图的屏幕截图,该视图可用于直接在电子邮件正文中查看 HTML 内容。

  14. 接下来,将异步 HTTP 响应添加到 HTTP 触发器。 在 HTTP 触发器与 Gmail 操作之间,选择“+”符号,然后选择“添加并行分支”。

    显示加号 (+) 的屏幕截图,其中突出显示了“添加并行分支”选项。

  15. 在搜索框中搜索“响应”,然后选择“响应”操作。

    显示搜索栏的屏幕截图,其中突出显示了响应操作。

    默认情况下,响应操作会发送 HTTP 200。 这对于本教程而言已足够。 有关详细信息,请参阅 HTTP 请求/响应参考

  16. 在设计器工具栏上,再次选择“保存”。

将 HTTP 请求代码添加到应用

确保已复制前面看到的 HTTP 请求触发器 URL。 此 URL 包含敏感信息,因此最好不要直接将其放入代码中。 在应用服务中,可以使用应用设置将其作为环境变量进行引用。

Cloud Shell 中,使用以下命令创建应用设置(请替换 <app-name>、<resource-group-name> 和 <logic-app-url>):

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings LOGIC_APP_URL="<your-logic-app-url>"

在代码中,将适用于你的语言框架的任何 HTTP 客户端语言与以下配置配合使用,向该 URL 发出标准的 HTTP POST 请求:

  • 请求正文包含提供给逻辑应用的相同 JSON 格式:

    {
        "task": "<description>",
        "due": "<date>",
        "email": "<email-address>"
    }
    
  • 请求包含标题 Content-Type: application/json

  • 若要优化性能,在可能的情况下,请以异步方式发送请求。

选择下面的首选语言/框架选项卡查看示例。

在 ASP.NET 中,可以使用 System.Net.Http.HttpClient 类发送 HTTP POST 请求。 例如:

// requires using System.Net.Http;
var client = new HttpClient();
// requires using System.Text.Json;
var jsonData = JsonSerializer.Serialize(new
{
    email = "a-valid@emailaddress.com",
    due = "4/1/2020",
    task = "My new task!"
});

HttpResponseMessage result = await client.PostAsync(
    // requires using System.Configuration;
    ConfigurationManager.AppSettings["LOGIC_APP_URL"],
    new StringContent(jsonData, Encoding.UTF8, "application/json"));
    
var statusCode = result.StatusCode.ToString();

如果在教程:使用 SQL 数据库在 Azure 中生成 ASP.NET 应用的示例应用中测试此代码,可以在添加 Todo 项后,使用该代码在 Create 操作中发送电子邮件确认。 若要使用上述异步代码,请将 Create 操作转换为异步操作。

后续步骤