EasySQLMAIL系统操作手册->外部接口功能

1 什么是外部接口功能

2 启用外部接口功能

3 外部接口表格式说明

3.1 邮件发送和任务触发接口表结构:EASYSQLMAIL_INTF

3.2 企业微型消息接口表结构:EASYSQLMAIL_WX_INTF

4 使用外部接口表

4.1 通过外部接口表发送普通邮件

4.2 通过外部接口表发送HTML邮件

4.3 通过外部接口表触发一个任务ID为123的数据发布任务

4.4 通过外部接口表触发数据发布任务,并传入变量

4.5 通过外部接口表发送企业微信文字消息

 

1 什么是外部接口功能

从1.0.1207版本开始,EasySQLMAIL提供了一种叫外部接口的功能。该功能为外部系统调用EasySQLMAIL的邮件发送和企业微信消息发送能力提供了便利。当系统管理员在数据源上启用了“外部接口功能”后,EasySQLMAIL会在外部数据源上创建EASYSQLMAIL_INTF、EASYSQLMAIL_WX_INTF等接口表,您可以通过向接口表中插入数据来调用EasySQLMAIL的发送能力。例如,您想在您的某个存储过程执行完成后发送一个邮件通知给自己,那么您可以在您的存储过程中加入如下SQL语句:

INSERT INTO easysqlmail_intf(subject,body,send_to) VALUES('存过提示','您好,存过已执行完成。','mymail@my.com');

EasySQLMAIL会定时扫描此数据源上的EASYSQLMAIL_INTF表,发现新记录后就将记录的内容发送给指定的收件人。

目前,EasySQLMAIL提供了以下几种能力的外部接口调用:

2 启用外部接口功能

系统管理员可以在设置数据源时启用数据源上的外部接口功能。

数据源外部接口选项Tab页

允许从该数据源上的接口表中发送邮件:选择此选项后,将会启动对应数据源上的邮件发送接口功能。

允许从该数据源上的接口表向系统地址薄中不存在的邮件地址发送邮件:默认情况下,EasySQLMAIL不允许向地址薄中不存在的邮件地址发信。当选择了此选项后,系统将允许从外部接口表上向地址薄中不存在的邮件地址发送邮件。

允许从该数据源上的接口表中启动数据提取任务:选择此选项后,将允许从此数据源上触发EasySQLMAIL中的数据发布任务。注意:您还需要设置允许从此数据源上触发的任务列表。

设置允许从此数据源上启动的任务:启用了任务触发接口后,您需要在这里设置允许从此数据源上触发的任务列表。

允许从该数据源上的接口表中发送微信企业号消息:选择此选项后,将允许从此数据源上调用微信企业号消息发送功能(仅能发送文字消息)。

选择可从此数据源上发送消息的微信企业号应用:启用了企业微信消息发送接口后,需要选择可用哪些企业号应用来发送接口上的消息。可多选。

选择可用哪些应用发送企业微信消息

接口表读取间隔时间:设置读取接口表新记录的间隔时间,单位为”秒“。默认为60秒。

3 外部接口表格式说明

启用外部接口功能后,EasySQLMAIL将会在数据源上创建以下接口表:

表名称 用途
EASYSQLMAIL_INTF 邮件发送和任务触发接口表。
EASYSQLMAIL_INTF_H 邮件发送和任务触发接口归档表。EASYSQLMAIL_INTF中的请求处理完后,EasySQLMAIL会将请求归档到EASYSQLMAIL_INTF_H表中。
EASYSQLMAIL_WX_INTF 企业微信消息发送接口表。
EASYSQLMAIL_WX_INTF_H 企业微信消息发送接口归档表。EASYSQLMAIL_WX_INTF中的请求处理完后,EasySQLMAIL会将请求移动到EASYSQLMAIL_WX_INTF_H中。

注意:在Oracle数据库中,EasySQLMAIL还会在数据源上创建名为insert_easysqlmail_intf_id和insert_easysqlmail_wx_intf_id的序列。并在EASYSQLMAIL_INTF和EASYSQLMAIL_WX_INTF表上创建INSERT触发器,用于在插入记录时生成REC_ID。

3.1 邮件发送和任务触发接口表结构:EASYSQLMAIL_INTF

字段 数据类型 说明
REC_ID NUMBER 记录的唯一ID。主键。Oracle数据库通过触发器insert_easysqlmail_intf_id从seq_easysqlmail_intf_id取值。其它数据库自动编号。
OPER_TYPE CHAR(1) 要调用的操作类型。M:调用邮件发送,T:触发一个指定的任务。默认为M。
TASK_ID NUMBER 如果OPER_TYPE为"T",则需要在这里指定要触发的任务ID。任务ID可在任务配置界面中查询到。
SUBJECT VARCHAR(500) 如果OPER_TYPE="M",则需要在这里指定邮件的标题。
BODY VARCHAR 如果OPER_TYPE="M",则在这里指定邮件的正文内容。Informix最大长度为2000,其它数据库最大长度为4000。
BODY_TYPE CHAR(4) 如果OPER_TYPE="M",则在这里指定邮件的正文的类型。可以是HTML(BODY中的内容作为HTML代码处理)或TEXT(BODY中的内容作为文本处理).默认为TEXT。
SEND_TO VARCHAR 如果OPER_TYPE="M",则在这里指定邮件的收件人,多个收件人之间用逗号进行分隔。例如
sqlmail@easysqlmail.com,support@easysqlmail.com

"用户名1<sqlmail@easysqlmail.com>,用户名2<support@easysqlmail.com>"
COPY_TO VARCHAR 如果OPER_TYPE="M",则可以在这里指定邮件的抄送人,多个收件人之间用逗号进行分隔。例如
sqlmail@easysqlmail.com,support@easysqlmail.com

"用户名1<sqlmail@easysqlmail.com>,用户名2<support@easysqlmail.com>"
TASK_PARAMS VARCHAR 如果OPER_TYPE="T",则可以在这里设置要传递给任务的变量值。格式为"参数名=参数值;",多个参数之间用";"号隔开。Informix最大长度为2000,其它数据库最大长度为4000。
注意:需要在任务配置中为变量选择了“允许从外部接口表中传入变量值” 选项后,任务才能接受从外部接口中传入此变量的值,否则在任务执行时会出现“不允许从外部接口传入此变量”错误。
EXP_TIME DATETIME 在这里指定邮件发送或任务运行请求的过期时间。如果不指定过期时间,默认在24小时后过期。请求过期后将不会再被处理。
USE_MAIL_ACCT VARCHAR 如果OPER_TYPE="M",则可以在这里指定使用哪个发信账号发送此邮件,多个邮件账号之间用逗号分隔。如果不指定,EasySQLMAIL会随机选择发信账号发送。在指定发信账号时,可以使用"*"号,表示任意账号。例如:
acct1@easysqlmail.com,acct2@easysqlmail.com,*
表示优先使用acct1发信,如果acct1发送失败,则用acct2发送。如果acct2仍然发送失败,则使用任意账号(包括acct1和acct2) 发信。
CREATE_TIME DATETIME 请求的创建时间。默认为系统当前时间,用户不需要更改。
STATE CHAR(1) 请求的状态。A:已生成(默认状态),D:EasySQLMAIL已取,X:删除;C:执行成功;E:执行出错;F:执行失败。默认为A。用户不需要更改。
STATE_TIME DATETIME 请求的状态时间。默认为系统当前时间,用户不需要更改。
MAIL_ID NUMBER EasySQLMAIL处理请求时为请求生成的邮件ID。EasySQLMAIL在处理成功完成后填写此字段。
TASK_INST_ID NUMBER 如果OPER_TYPE="T",则EasySQLMAIL在处理完后会将任务实例ID填入此字段。
RESULT_MESSAGE VARCHAR 处理结果描述。由EasySQLMAIL填写。
SYSTEM_ID VARCHAR 处理此请求的EasySQLMAIL的系统ID,由EasySQLMAIL填写。
DATA_SOURCE_ID NUMBER 处理此请求的数据源ID,由EasySQLMAIL填写。

3.2 企业微型消息接口表结构:EASYSQLMAIL_WX_INTF

字段 数据类型 说明
REC_ID NUMBER 记录的唯一ID。主键。Oracle数据库通过触发器insert_easysqlmail_wx_intf_id从seq_easysqlmail_wx_intf_id取值。其它数据库自动编号。
WX_APP_ID NUMBER 用于发送此消息的微信企业号应用ID。可在微信企业号管理界面中查询到。
CONTENT VARCHAR 要发送的消息文字。Informix数据库最大长度为2000,其它数据库最大长度为4000。
TO_USER VARCHAR 要发送的用户列表。最多支持1000个用户。如果为@all,表示发给关注了相应应用的所有用户,否则就要给出用户ID列表。多个用户ID之间使用"|"(竖线)分隔。用户ID可在微信企业号管理平台的“通信录”中查到,也可以在EasySQLMAIL的“微信企业号管理”的“成员查询” 中查询到。
TO_PARTY VARCHAR 接收此消息的部门ID列表。多个部门ID之间用"|"(竖线)分隔。最多支持100个部门ID。当to_user为@all,则此值无效。部门ID可在EasySQLMAIL的消息通道管理的对应应用配置中查询到。
TO_TAG VARCHAR 接收此消息的标签ID列表。多个标签ID之间用"|"(竖线)分隔。最多支持100个标签ID。当to_user为@all时此值无效。标签ID可在EasySQLMAIL的微信企业号应用管理中查询到。
SAFE CHAR(1) 是否使用保密文档选项。0:不使用,1:使用。默认为0。如果使用了保密文档选项,收件人收到的消息将不能转发,且浏览时会显示收件人名称的水印。
CREATE_TIME DATETIME 请求的创建时间。默认为系统当前时间,用户不需要更改。
EXP_TIME DATETIME 在这里指定消息的过期时间。如果不指定过期时间,默认在24小时后过期。请求过期后将不会再被处理。
STATE CHAR(1) 状态。A:已生成(默认状态),D:EasySQLMAIL已取,X:删除;C:发送成功;F:发送失败
STATE_TIME DATETIME 请求的状态时间。默认为系统当前时间,用户不需要更改。
WX_MESSAGE_ID NUMBER 由EasySQLMAIL回填发送后的wx_message_id。
RESULT_MESSAGE VARCHAR EasySQLMAIL处理后回填的消息文本
SYSTEM_ID VARCHAR 处理此请求的EasySQLMAIL的系统ID,由EasySQLMAIL填写。
DATA_SOURCE_ID NUMBER 处理此请求的数据源ID,由EasySQLMAIL填写。

4 使用外部接口表

启用数据源上的外部接口功能后,您可以通过向相应接口表插入数据来调用EasySQLMAIL的功能。

4.1  通过外部接口表发送普通邮件

INSERT INTO EASYSQLMAIL_INTF(subject,body,send_to)  VALUES('测试邮件','您好,这是测试邮件。','sqlmail@easysqlmail.com');

4.2  通过外部接口表发送HTML邮件

INSERT INTO EASYSQLMAIL_INTF(subject,body,send_to,body_type)  VALUES('测试邮件','您好,这是测试邮件。<span style="color:red;">这里的内容是红字显示</span>','sqlmail@easysqlmail.com','HTML');

4.3  通过外部接口表触发一个任务ID为123的数据发布任务

INSERT INTO EASYSQLMAIL_INTF(oper_type,task_id)  VALUES('T',123);

4.4  通过外部接口表触发数据发布任务,并传入变量

INSERT INTO EASYSQLMAIL_INTF(oper_type,task_id,task_params)  VALUES('T',123,'变量1=值1;变量2=值2');

4.5  通过外部接口表发送企业微信文字消息

INSERT INTO EASYSQLMAIL_WX_INTF(wx_app_id,content,to_user)  VALUES(23,'您好。这是一个测试消息','easysqlmail_support|staff1');

INSERT INTO EASYSQLMAIL_WX_INTF(wx_app_id,content,to_user)  VALUES(23,'您好。这是一个测试消息','@all');

INSERT INTO EASYSQLMAIL_WX_INTF(wx_app_id,content,to_party)  VALUES(23,'您好。这是一个测试消息','19');