
# 对接SMTP实现邮件发送功能
#### 背景信息
简单邮件传输协议（Simple Mail Transfer Protocol，简称SMTP），是一种提供可靠且有效电子邮件传输的协议。在AstroZero中应用通过与SMTP对接，实现邮件发送功能。如何开通邮箱的SMTP功能，请参见[服务编排、BPM、脚本中发送邮件功能不可用](https://support.huaweicloud.com/astrozero_faq/astrozero_faq_0128.html)。
#### 场景描述
使用SMTP给某用户发送邮件。
#### 创建SMTP连接器
1. 参考[创建连接器入口](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0653.html#astrozero_05_0653__section54416265268)中操作，进入创建连接器页面。
2. 在左侧列表中，选择"消息通知 \> SMTP邮箱服务"，单击"+"。 
   图1新建SMTP邮箱服务连接器   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044912.png "点击放大")
   
   
3. 设置SMTP邮箱服务对接参数，单击"保存"。 
   图2创建SMTP邮箱服务   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044952.png "点击放大")
   - 名称：新建连接器的名称，在系统中的唯一标识。
   
   - 用户名：邮箱的用户名，如果未修改过，默认为邮箱地址。 示例：以网易163邮箱为例，此处可配置为example@163.com。
     
   
   - 密码：邮箱开通SMTP功能时，生成的授权密码，是一段随机字符串。 示例：配置为163邮箱开通SMTP功能时生成的授权密码，如[图3]所示。
     图3授权密码   
     ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124221.png) 
   
   - 发件人：填写发件人的邮箱地址。
   
   - SMTP服务地址:端口：开通邮箱SMTP功能时，配置的服务器地址和端口号。常用邮箱开启SMTP功能后，发送邮件服务器地址及端口，请参见[常用邮箱SMTP服务器地址及端口](https://support.huaweicloud.com/astrozero_faq/astrozero_faq_0128.html)中操作获取。
   
   - 描述：新建连接器的描述信息。
   
   - 打包当前配置：默认为选中，对信息敏感的场景，建议不勾选。 选中该选项后，应用打包时会将当前配置的连接器信息一并打出。例如，如果应用包发布到运行环境，当前配置默认会被同步到运行环境中。
     
   
   
   
   
4. （可选）测试是否能发送邮件。 
   1. 在该连接器详情页面，单击测试中的"发送邮件"。
   
   2. 输入收件人、主题和邮件内容，单击"发送"。
      图4发送邮件   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932885508.png "点击放大")
      收件人可收到邮件，表示测试成功，如[图5]。
      图5接收邮件内容   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044896.png "点击放大") 
   
   
   
   
 
#### 在脚本中调用连接器
在脚本中，调用已创建的连接器，实现与SMTP的对接。
1. 参考[开发一个简单脚本实例](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_5031.html)中操作，创建一个空白脚本。
   
   图6新建一个空白脚本   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044892.png "点击放大")
   
   
2. 在脚本编辑器中，输入如下代码。
   
   ```
   // 导入连接器
   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"为邮件内容。
   
   
3. 单击脚本编辑器页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044936.png)，保存脚本。
4. 保存成功后，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124269.png)，执行脚本。
5. [2]中已设置入参，故此处不需要再设置，直接单击测试窗口右上角的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044908.png)。
6. 检查收件人是否收到邮件。 
   收到邮件，表示成功调用连接器，如[图7]。
   图7接收邮件内容   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044956.png "点击放大")
   
   
7. 单击脚本编辑器页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284065.png)，启用脚本。
 
#### 在服务编排中调用连接器
在服务编排中，调用已创建的连接器，实现与SMTP的对接。
1. 参考[如何开发服务编排](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0601.html)中操作，创建一个服务编排。
   
   图8新建一个服务编排   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284041.png "点击放大")
   
   
2. 在服务编排设计页面左侧，"连接器 \> 消息通知"，拖拽"EmailBySMTP"图元至画布中。 
   图9拖拽EmailBySMTP图元至画布中   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124261.png "点击放大")
   
   
3. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284049.png)，设置基本信息。
   
   图10配置基本信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932885548.png "点击放大")
   - 标签：图元的标签名，用于在页面展示。
   
   - 名称：图元在系统中的唯一标识，不能和其他图元相同。
   
   - 描述：图元的描述信息。
   
   - 连接器：该服务编排使用的连接器的名称。
   
   
   
   
4. 设置调用"SMTP"参数。 
   图11配置SMTP连接器   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044928.png "点击放大")
   - 动作：设置为"SendEmailBySMTP"，是系统预置的邮件发送接口。
   
   - 输入参数：设置接口的输入参数。输入参数。
     - "目标"设置为"address"时：请在"源"中，配置邮件接收地址，可定义为一个输入型变量""email add1""。
     
     - "目标"设置为"subject"时：请在"源"中，配置邮件主题，可定义为一个输入型变量""email sub1""。
     
     - "目标"设置为"body"时：请在"源"中，配置邮件内容，可定义为一个输入型变量""email body1""。
     
     
     ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
     使用模板发送邮件时，只需要填入邮件模板(template)名，不需要填写主题和内容。
     
   
   - 输出参数：设置接口的输出参数。本例无需设置输出参数。
   
   
   
   
5. 连接开始图元和SMTP图元。 
   图12连接图元   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933044948.png)
   
   
6. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284057.png)，保存服务编排。
7. 保存成功后，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960124273.png)，运行服务编排。
8. 设置输入参数，单击"运行"。 
   输入参数样例如下：
   ```
   {
       "address": "test@example.com",
       "subject": "SMTP连接器",
       "body": "在服务编排中调用SMTP连接器"
   }
   ```
   样例中，address为收件人，subject为邮件主题，body为邮件内容。address为必填字段，邮件主题和邮件内容不能同时为空。
   显示下图信息，表明邮件发送成功。
   图13邮件发送成功   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284045.png)
   
   
9. 单击服务编排设计页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960284025.png)，启用服务编排。
 
