对接SMTP实现邮件发送功能
背景信息
简单邮件传输协议(SimpleMailTransferProtocol,简称SMTP),是一种提供可靠且有效电子邮件传输的协议。在AstroZero中应用通过与SMTP对接,实现邮件发送功能。如何开通邮箱的SMTP功能,请参见服务编排、BPM、脚本中发送邮件功能不可用。
场景描述
使用SMTP给某用户发送邮件。
创建SMTP连接器
- 参考创建连接器入口中操作,进入创建连接器页面。
- 在左侧列表中,选择“消息通知 > SMTP邮箱服务”,单击“+”。
图1 新建SMTP邮箱服务连接器
- 设置SMTP邮箱服务对接参数,单击“保存”。
图2 创建SMTP邮箱服务
- 名称:新建连接器的名称,在系统中的唯一标识。
- 用户名:邮箱的用户名,如果未修改过,默认为邮箱地址。
- 密码:邮箱开通SMTP功能时,生成的授权密码,是一段随机字符串。
示例:配置为163邮箱开通SMTP功能时生成的授权密码,如图3所示。
- 发件人:填写发件人的邮箱地址。
- SMTP服务地址:端口:开通邮箱SMTP功能时,配置的服务器地址和端口号。常用邮箱开启SMTP功能后,发送邮件服务器地址及端口,请参见常用邮箱SMTP服务器地址及端口中操作获取。
- 描述:新建连接器的描述信息。
- 打包当前配置:默认为选中,对信息敏感的场景,建议不勾选。
选中该选项后,应用打包时会将当前配置的连接器信息一并打出。例如,如果应用包发布到运行环境,当前配置默认会被同步到运行环境中。
- (可选)测试是否能发送邮件。
- 在该连接器详情页面,单击测试中的“发送邮件”。
- 输入收件人、主题和邮件内容,单击“发送”。
图4 发送邮件
收件人可收到邮件,表示测试成功,如图5。
在脚本中调用连接器
在脚本中,调用已创建的连接器,实现与SMTP的对接。
- 参考开发一个简单脚本实例中操作,创建一个空白脚本。
图6 新建一个空白脚本
- 在脚本编辑器中,输入如下代码。
// 导入连接器 import * as connector from 'connector'; //新建SMTP邮件连接器,第一个参数固定是emailsmtp,第二个参数是连接器的名称 let client = connector.newClient("emailsmtp","命名空间__smtp01"); //构建请求消息头,包括收件人地址、邮件主题、邮件正文(主题和正文不能同时为空) //按内容发送 let req ={"address":"test@example.com","subject":"SMTP功能验证-脚本","body":"使用SMTP发送邮件"}; //按模板发送,如果有template模板参数,则主题和正文配置无效,按邮件模板中的内容发送 //let req={"address":"test@example.com","template":"smtptt1."} //发送邮件,其中第一个参数不用填写,第二个参数为消息体 let resp = client.invoke("",req);
其中,connector.newClient中“命名空间__smtp01”为连接器的名称,“address”为收件人,“subject”为主题,“body”为邮件内容。
- 单击脚本编辑器页面上方的,保存脚本。
- 保存成功后,单击,执行脚本。
- 2中已设置入参,故此处不需要再设置,直接单击测试窗口右上角的。
- 检查收件人是否收到邮件。
收到邮件,表示成功调用连接器,如图7。
- 单击脚本编辑器页面上方的,启用脚本。
在服务编排中调用连接器
在服务编排中,调用已创建的连接器,实现与SMTP的对接。
- 参考如何开发服务编排中操作,创建一个服务编排。
图8 新建一个服务编排
- 在服务编排设计页面左侧,“连接器 > 消息通知”,拖拽“EmailBySMTP”图元至画布中。
图9 拖拽EmailBySMTP图元至画布中
- 单击,设置基本信息。
图10 配置基本信息
- 标签:图元的标签名,用于在页面展示。
- 名称:图元在系统中的唯一标识,不能和其他图元相同。
- 描述:图元的描述信息。
- 连接器:该服务编排使用的连接器的名称。
- 设置调用“SMTP”参数。
图11 配置SMTP连接器
- 动作:设置为“SendEmailBySMTP”,是系统预置的邮件发送接口。
- 输入参数:设置接口的输入参数。输入参数。
- “目标”设置为“address”时:请在“源”中,配置邮件接收地址,可定义为一个输入型变量“"email add1"”。
- “目标”设置为“subject”时:请在“源”中,配置邮件主题,可定义为一个输入型变量“"email sub1"”。
- “目标”设置为“body”时:请在“源”中,配置邮件内容,可定义为一个输入型变量“"email body1"”。
使用模板发送邮件时,只需要填入邮件模板(template)名,不需要填写主题和内容。
- 输出参数:设置接口的输出参数。本例无需设置输出参数。
- 连接开始图元和SMTP图元。
图12 连接图元
- 单击页面上方的,保存服务编排。
- 保存成功后,单击,运行服务编排。
- 设置输入参数,单击“运行”。
输入参数样例如下:
{ "address": "test@example.com", "subject": "SMTP连接器", "body": "在服务编排中调用SMTP连接器" }
样例中,address为收件人,subject为邮件主题,body为邮件内容。address为必填字段,邮件主题和邮件内容不能同时为空。
显示下图信息,表明邮件发送成功。
图13 邮件发送成功
- 单击服务编排设计页面上方的,启用服务编排。