操作步骤
创建 CMQ 主题订阅
- 登录 消息服务CMQ 控制台。
- 在主题订阅服务下单击新建,选择北京地域,命名为 SendEmail,主题属性保持默认即可。
创建云函数 SCF:SendEmail
- 登录云函数控制台,选择左侧导航栏中的函数服务。
- 在“函数服务”页面上方选择北京地域,并单击新建进入新建函数页面。
设置以下参数信息,并单击下一步。如下图所示:- 创建方式:选择模板创建。
- 模糊搜索:输入“通过消息队列发送邮件”,并进行搜索。本文以运行环境“Python2.7”为例。
单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。
- 在函数代码页签中,修改代码中的“第三方 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 主题和云函数的连通性
测试邮件发送的正确性
- 完成 SendEmail 函数创建后,进入函数详情页。在代码编辑器右上角单击测试模板,在展开的列表中选择新增测试模板,并选择 “CMQ Topic 事件模板”作为基础模板,测试模板命名为
sendemail
。 - 将 测试代码 复制粘贴到模板的代码框中,单击测试将代码部署并进行测试,查看函数运行日志。
其中 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 主题和云函数的联动。
- 切换至 消息服务 CMQ 控制台。
- 在主题订阅页面,单击主题 SendEmail 对应的发送消息。如下图所示:
- 在弹出的对话框中,输入如下消息内容后,单击发送。
{ "fromAddr":"*****@qq.com", "toAddr":"*****@qq.com", "title":"hello from scf & cmq", "body":"email content to send" }
说明:其中 msgBody 字段内的 fromAddr 字段和 toAdd 字段,需要根据您自身邮箱地址进行修改。
- 切换至 云函数控制台,查看 SendEmail 函数的执行日志,并前往邮箱查看是否收到了邮件。
完成测试后,您可以在您的应用代码中嵌入 CMQ SDK,对 SendEmail
这个主题队列发送消息,来完成邮件发送。