有奖捉虫:云通信与企业服务文档专题,速来> HOT

操作步骤

创建 CMQ 主题订阅

  1. 登录 消息服务CMQ 控制台
  2. 主题订阅服务下单击新建,选择北京地域,命名为 SendEmail,主题属性保持默认即可。

创建云函数 SCF:SendEmail

  1. 登录云函数控制台,选择左侧导航栏中的函数服务
  2. 在“函数服务”页面上方选择北京地域,并单击新建进入新建函数页面。
    设置以下参数信息,并单击下一步。如下图所示:
    • 创建方式:选择模板创建
    • 模糊搜索:输入“通过消息队列发送邮件”,并进行搜索。本文以运行环境“Python2.7”为例。
      单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。
  3. 函数代码页签中,修改代码中的“第三方 SMTP 服务”。参数 mail_host、mail_user、mail_pass、mail_port 需要根据实际发送的邮箱或邮件服务器来配置,本示例我们以 QQ 邮箱为例进行说配置。
    说明:

    您可以从 QQ邮箱帮助中心 了解到如何开启 QQ 邮箱的 SMTP 功能。QQ 邮箱的 SMTP 功能开启后,相应的参数如下:

    • mail_host:SMTP 服务器地址,即 smtp.qq.com。
    • mail_user:登录用户名为您的邮箱地址,例如 123******@qq.com。
    • mail_pass:您在开启 SMTP 功能时设置的密码。
    • mail_port:服务器登录端口,由于 QQ 邮箱强制要求 SSL 登录,端口固定为465,同时代码中使用 smtplib.SMTP_SSL 创建 SSL 的 SMTP 连接。

测试 CMQ 主题和云函数的连通性

测试邮件发送的正确性

  1. 完成 SendEmail 函数创建后,进入函数详情页。在代码编辑器右上角单击测试模板,在展开的列表中选择新增测试模板,并选择 “CMQ Topic 事件模板”作为基础模板,测试模板命名为 sendemail
  2. 测试代码 复制粘贴到模板的代码框中,单击测试将代码部署并进行测试,查看函数运行日志。
    其中 msgBody 字段内的 fromAddr 字段和 toAdd 字段,需要根据您自身邮箱地址进行修改,建议修改为相同地址,自身邮箱向自身邮箱内发送邮件,以便测试邮件发送的正确性。

测试代码

{
  "Records": [
    {
      "CMQ": {
        "type": "topic",
        "topicOwner":1253970226,
        "topicName": "sendEmailQueue",
        "subscriptionName":"sendEmailFunction",
        "publishTime": "2017-09-25T06:34:00.000Z",
        "msgId": "123345346",
        "requestId":"123345346",
        "msgBody": "{\"fromAddr\":\"*****@qq.com\",\"toAddr\":\"****@qq.com\",\"title\":\"hello from scf & cmq\",\"body\":\"email content to send\"}",
        "msgTag": ""
      }
    }
  ]
}

测试结果

测试成功结果。如下图所示:

测试 CMQ 主题与云函数的联动

邮件测试成功后,继续测试 CMQ 主题和云函数的联动。

  1. 切换至 消息服务 CMQ 控制台
  2. 在主题订阅页面,单击主题 SendEmail 对应的发送消息。如下图所示:
  3. 在弹出的对话框中,输入如下消息内容后,单击发送
    {
    "fromAddr":"*****@qq.com",
    "toAddr":"*****@qq.com",
    "title":"hello from scf & cmq",
    "body":"email content to send"
    }
    说明:

    其中 msgBody 字段内的 fromAddr 字段和 toAdd 字段,需要根据您自身邮箱地址进行修改。

  4. 切换至 云函数控制台,查看 SendEmail 函数的执行日志,并前往邮箱查看是否收到了邮件。

完成测试后,您可以在您的应用代码中嵌入 CMQ SDK,对 SendEmail 这个主题队列发送消息,来完成邮件发送。