EasySQLMAIL操作手册
3.4.3 选项:允许员工登录EasySQLMAIL企业信息查询平台
4.4.1 邮件发送和任务触发接口表(EASYSQLMAIL_INTF)结构说明
4.4.2 企业微型消息接口表(EASYSQLMAIL_WX_INTF)结构说明
4.5.3 通过外部接口表触发一个任务ID为123的数据发布任务
4.5.5.1 通过ID为23的微信企业号应用发送一个消息给用户user01和user02
4.5.5.2 通过ID为23的微信企业号应用发送一个消息给应用可见的所有人
4.5.5.3 通过ID为23的微信企业号应用发送一个消息给ID为19的部门下的所有人
6.8.3.2 在任务中创建附件模板,上传带图表的模板文件并设置查询语句
6.8.4.2 将Excel表格模板插入到邮件正文中的指定位置
6.8.4.3 编辑查询数据的SQL语句,并设置SQL字段与表格中的数据单元格的对应关系
6.9.8 直接将查询结果转换为简单的Excel表格或文本文件
6.9.8.1 在任务中添加“直接将查询结果转换为简单的Excel表格或文本文件”附件模板
6.10.4 更快速地执行被@@RUNCMD调用的SQL命令
6.12.3 在发信邮件帐号上启用“允许接受数据提取申请”选项...
6.13.2 启用“按指定条件循环执行任务”选项,并指定循环数据来源
6.13.4 修改任务的SQL查询语句,利用@@loopdata(员工ID)变量来查询不同员工的推送信息
7.5 将其它本地应用添加到EasySQLMAIL企业信息查询平台界面中
EasySQLMAIL是一款信息推送类软件产品,主要用于企业内部报表、订单、系统消息等各种信息的主动推送。
在EasySQLMAIL中,管理员通过简单配置就能够实现定时运行数据库SQL查询语句并将查询结果转换为多种格式通过电子邮件、企业微信、钉钉等多种方式发送给指定的员工。
EasySQLMAIL具有成本低、安装部署简便、配置灵活等特点,能够快速地为企业提供内部信息推送服务。软件目前可以支持的推送方式有电子邮件、企业微信、钉钉。可推送的信息格式有文字信息、HTML文档、Excel表格、PDF文件、图片等。
在EasySQLMAIL中,您只需要进行简单的配置,就可让重要信息以文字、HTML文档、Excel表格、PDF文件或图片等格式通过电子邮件、企业微信、阿里钉钉等通道准确及时地推送给企业的员工。
EasySQLMAIL的主要应用场景:
报表推送
EasySQLMAIL能够将SQL语句的查询结果自动转换为HTML文档、Excel表格或PDF文件推送给员工。在转换为HTML文档或PDF文件时,还可以在文件中加入图表以便于报表的阅读。在推送PDF文件时,可以对PDF文件进行加密后进行推送,以保证信息的安全。
CRM订单信息、ERP流程信息推送
过去,很多企业的ERP、CRM系统在设计时没有考虑流程消息的主动推送,员工通常需要自行到系统中查询待处理的流程信息,这样不仅增加员工的工作量,效率也很低下。EasySQLMAIL可以通过连接CRM、ERP的数据库定时查询流程信息,并将信息通过企业微信、钉钉等渠道及时通知给员工,为提高流程的处理效率提供帮助。
其它内部信息推送
企业内的各种信息系统运行过程中会产生很多重要信息,例如运维系统的告警信息、运行报告等。及时将这些信息推送给相关员工,能够提高信息的利用价值,避免因信息延误而给企业带来损失。EasySQLMAIL为这些信息的推送提供了一个统一的平台,无论在推送功能的实现上还是在推送平台的运行管理上都极为便利。
EasySQLMAIL降低了信息推送的技术难度,为企业提供了一个统一、高效、安全的信息推送平台,为构建企业信息系统与员工之间的桥梁、帮助员工充分利用信息价值提供了支持。
安装部署简便
EasySQLMAIL将所有需要用到的组件全部打包到了统一的安装程序中,从安装到部署完成只需要不到10分钟时间,让您在短时间内就能够快速搭建起属于您的企业内部信息推送平台。
快速对接现有系统
EasySQLMAIL通过连接数据库实现与企业现有系统的快速对接,软件支持连接Oracle、MySQL、SQL Server、PostgreSQL、IBM Informix数据库。
技术难度低
在EasySQLMAIL中,您不需要进行复杂的编程开发,只需要编写SQL语句即可让EasySQLMAIL按您的要求进行信息的查询、转换和推送。
灵活配置推送任务
管理员可以灵活配置任务的执行时间和执行条件。例如,可以通过配置让任务在每周1-5的每天9:00到18:00间每小时运行一次,并将查询到的订单记录推送给相关员工。
通过使用“先决条件”,能够很容易地实现“无记录时不发送”的功能。此外,您还可以通过EasySQLMAIL的“外部接口表”功能在您自己的SQL语句中调用EasySQLMAIL的信息推送能力来发送电子邮件、企业微信和钉钉消息。
推送范围可控
EasySQLMAIL对信息的推送范围有严格限制。默认情况下,信息通过电子邮件推送时,发送范围仅限于本企业内的指定员工,管理员可以通过管理EasySQLMAIL系统地址簿来控制信息的发送范围。通过企业微信和钉钉发送信息时,也只允许在企业范围内进行推送。管理员还能够通过配置让EasySQLMAIL将信息转换为加密的PDF文件进行推送。
多渠道推送
EasySQLMAIL能够将同一个内容通过电子邮件、企业微信、钉钉等多种渠道推送给员工。例如,可以在报表生成后,将报表的内容(HTML文档、Excel表格等)通过电子邮件发送到员工的邮箱,同时向员工的企业微信或钉钉推送一条消息,告知员工报表已发送到邮箱,提醒员工及时查看。
| 硬件要求 |
4G以上内存 企业版至少100G剩余磁盘空间; 桌面版至少5G剩余磁盘空间 |
企业版用户建议8G或以上内存,500G剩余磁盘空间,多核CPU 桌面版用户建议4G或以上内存,10G剩余磁盘空间 |
| 操作系统 |
Windows7及以上简体中文操作系统 或 Windows Server2008及以上简体中文服务器操作系统 |
企业版用户建议使用64位Windows Server操作系统 桌面版用户建议使用Windows10以上64位操作系统 |
安装程序下载地址:https://www.easysqlmail.com/download.html。下载完成后,在服务器上以管理员身份运行安装程序进行安装即可。

填写安装信息
在这个界面中:
| 您的公司名称 |
填写使用此软件的公司或组织名称 |
| 您的用户名称 |
填写使用此软件的用户名称 |
| 您的电子邮件地址 |
填写您的电子邮件地址 |
您填写的公司名称和用户名称仅用于我们向您提供软件的技术服务时使用。
您填写的电子邮件地址将作为您在我们的客户中心的默认邮件地址。在下列情况下我们会向您设置的邮件地址发送信息:
1、 您遗忘了客户中心登录密码。找回密码时,客户中心会向您的邮件地址发送找回密码的链接;
2、 您在客户中心购买了我们的产品并完成订单支付后申请开具发票时,此邮件地址将被作为默认的电子发票推送地址(您也可以在申请开票时修改推送地址);
3、 EasySQLMAIL技术团队定期向您推送与EasySQLMAIL有关的技术文档、配置案例等相关资讯。
我们将妥善保存您输入的信息,不会将您输入的信息用作其它用途或透露给第三方。
为尊重您的隐私,如您对此类信息较为敏感,可以不用输入这些内容。
相关主题 :什么是客户中心?

安装选项界面
在这个对话框中:
| EasySQLMAIL安装位置 |
EasySQLMAIL将被安装到这个目录下。建议将EasySQLMAIL安装到剩余空间较大的磁盘分区上。安装位置的路径中不能包含中文字符和空格。 |
| 默认打印机 |
选择一个打印机作为EasySQLMAIL的默认打印机。在进行Excel表格转换为PDF格式操作时,系统将会用到这个打印机的信息。 可以指定一个虚拟打印机(例如PDFCreator)作为EasySQLMAIL的默认打印机。推荐使用PDFCreator虚拟打印机作为EasySQLMAIL的默认打印机。 注意:打印机名称中不能带有中文字符。 |
| PostgreSQL数据库端口号 |
设置EasySQLMAIL自带的PostgreSQL数据库的监听端口号。 提示:一般不建议更改此参数,使用默认值即可。 |
| PostgreSQL数据库用户名 |
固定为sqlmail,不能更改。 |
| PostgreSQL数据库密码 |
设置EasySQLMAIL自带的PostgreSQL数据库的登录密码。 |
| WEB控制台访问路径 |
设置EasySQLMAIL的WEB控制台的访问路径。默认为/webconsole,表示在安装完成后需要通过http://127.0.0.1:9110/webconsole来访问WEB控制台。 |
以上信息设置完成后,点击“下一步”即可进行安装。安装过程中,安装程序会进行如下操作:
(1) 将EasySQLMAIL所需文件解压到安装目录下;
(2) 在安装目录下创建EasySQLMAIL的PostgreSQL数据库;
(3) 生成EasySQLMAIL授权文件;
(4) 将EasySQLMAIL安装为系统服务(仅企业版);
安装完成后,在服务器上通过浏览器访问http://127.0.0.1:9110/webconsole即可打开EasySQLMAIL的控制台界面。EasySQLMAIL控制台界面基于Webkit内核浏览器开发,建议使用Chrome、Firefox或Microsoft Edge浏览器进行访问。
第一次登录时,用户名为admin,密码为空。登录后系统会要求设置管理员密码。设置密码后即可进入EasySQLMAIL控制台界面。
| arch |
用于存放归档的消息、邮件记录 |
| bin |
存放EasySQLMAIL执行文件及jre、PostgreSQL、Tomcat等组件 |
| conf |
存放EasySQLMAIL的系统配置文件 |
| db |
存放EasySQLMAIL的PostgreSQL数据库文件 |
| log |
存放运行日志文件 |
| openssl |
存放OpenSSL组件及SSL证书文件 |
| queryServer |
存放EasySQLMAIL企业信息查询平台组件 |
| running |
存放系统运行时所需的过程文件 |
| temp |
存放系统运行时产生的临时文件 |
| template |
存放任务的模板文件 |
| web |
存放系统控制台的web程序文件 |
EasySQLMAIL安装目录下以DOS批处理文件的形式存放了一些常用的维护命令。
| fix-excel.bat |
用于修复Office组件的BUG。如果配置任务时出现“Microsoft Office Excel 不能访问文件”错误,可以执行此命令修复错误。 参见:https://www.easysqlmail.com/faqview.html?id=373 |
| installservice.bat |
将EasySQLMAIL安装为系统服务。重装操作系统或是错误执行了uninstall.bat时,可以使用这个命令重新安装EasySQLMAIL服务。 |
| killsqlmail.bat |
在EasySQLMAIL服务出现问题无法正常停止时,使用此命令强行结束sqlmail进程。 注意:此命令会强行中止sqlmailcore.exe进程,一般不建议使用。正常情况下应使用shutdown.bat命令停止EasySQLMAIL服务。 |
| querysn.bat |
查询EasySQLMAIL的软件序列号。 |
| shutdown.bat |
正常停止EasySQLMAIL服务。 |
| startdb.bat |
系统维护时使用。以独立模式单独启动EasySQLMAIL的PostgreSQL数据库。 |
| stopdb.bat |
系统维护时使用。停止EasySQLMAIL的PostgreSQL数据库。 |
| startservice.bat |
启动EasySQLMAIL的系统服务。 |
| startup.bat |
系统维护时使用。在命令行窗口中启动EasySQLMAIL系统。用于系统调试和故障定位。 |
| uninstall.bat |
卸载EasySQLMAIL系统服务。此程序将从系统服务中删除EasySQLMAIL服务。服务删除后,EasySQLMAIL将不再随操作系统自动启动。 |
| queryServer\ installservice.bat |
将EasySQLMAIL企业信息查询平台安装为系统服务。安装为系统 服务后,EasySQLMAIL企业信息查询平台将随操作系统一起自动启动。 |
| queryServer\ startservice.bat |
启动EasySQLMAIL企业信息查询平台的系统服务。 |
| queryServer\ startup.bat |
在命令行中运行EasySQLMAIL企业信息查询平台。用于系统调试和故障定位。 |
| queryServer\ stopservice.bat |
停止EasySQLMAIL企业信息查询平台的系统服务。 |
| queryServer\ uninstall.bat |
卸载EasySQLMAIL企业信息查询平台的系统服务。卸载后EasySQLMAIL企业信息查询平台将不会再随操作系统自动启动。 |
企业版用户可以运行EasySQLMAIL安装目录下的uninstall.bat命令即可从系统服务中删除EasySQLMAIL服务。uninstall.bat不会从磁盘上删除EasySQLMAIL安装目录。服务删除后,如果确定不再使用EasySQLMAIL,手动删除EasySQLMAIL安装目录即可。
桌面版用户请在控制面板的“添加删除程序”中卸载EasySQLMAIL系统。
EasySQLMAIL系统安装完成后,需要进行基本的配置后才能投入使用。需要配置的基础信息主要包括:
发信邮件账号:系统发送电子邮件时需要用到此信息。
企业微信消息通道:系统通过企业微信推送信息时需要用到此信息。
钉钉消息通道:系统通过钉钉推送信息时需要用到此信息。
数据源:系统查询需要推送的数据时需要用到此信息。
地址簿和联系人:通过此配置来设置系统可以向哪些人推送电子邮件。
EasySQLMAIL将通过系统管理员配置的发信邮件账号向外发送电子邮件。系统管理员可以为EasySQLMAIL配置多个发信邮件账号,并设置这些发信账号的发信优先级别。
在EasySQLMAIL控制台中点击左侧菜单条中的“消息通道管理”->“发信邮件账号管理”打开发信邮件账号管理界面,然后点击“创建新账号”按钮。

发信邮件账号对话框
在这个对话框中:
| 发信协议 |
EasySQLMAIL使用SMTP协议发送邮件 |
| 电子邮件地址 |
输入发信邮件账号的电子邮件地址。例如”easysqlmail@qq.com” |
| 邮件系统用户名称 |
输入发信邮件帐号在邮件系统中的登录名称。邮件系统用户名称通常与电子邮件地址相同。 |
| 邮件系统用户密码 |
输入发信邮件账号在邮件系统中的登录密码。 注意:某些邮件系统(例如QQ邮箱、新浪邮箱等)需要使用邮箱的“授权码“作为登录密码。参见QQ邮箱、新浪邮件的授权码 |
| 允许发送邮件 |
是否允许通过此邮件账号发送邮件。默认允许。 |
| 允许接受数据提取申请 |
是否允许通过此邮件账号接收数据提取申请。默认不允许。参见数据提取码 |
| SMTP服务器地址 |
发信邮件账号的SMTP服务器地址。 |
| SMTP端口 |
发信邮件账号的SMTP服务端口。如果不填写,系统将使用默认SMTP端口进行发信。 SMTP默认端口号为25,启用SSL连接时,SMTP默认端口号为465。此选项需要咨询邮件系统管理员。 |
| 发信间隔时间(秒) |
发信时间间隔,单位为秒。默认每10秒检查并发送一次新邮件 |
| 使用SSL连接SMTP服务器 |
是否使用SSL协议连接SMTP服务器。此选项需要咨询邮件系统管理员。 |
| 使用TLS连接SMTP服务器 |
是否使用TLS协议连接SMTP服务器。此选项需要咨询邮件系统管理员。 |
| 收信协议类型 |
如果启用了“允许接受数据提取申请”,则需要在这里指定收信协议类型。可选值为”POP3”或”IMAP”。此选项需要咨询邮件系统管理员。 |
| POP3/IMAP服务器地址 |
如果启用了“允许接受数据提取申请”,则需要在这里指定POP3或IMAP服务器的地址。 |
| POP3/IMAP服务器端口 |
如果启用了“允许接受数据提取申请”,则需要在这里指定POP3或IMAP服务端口。如果不填写,系统将使用默认的POP或IMAP端口号进行收信。 |
| 收信间隔时间(秒) |
如果启用了“允许接受数据提取申请”,则可以设置收取邮件的间隔时间,单位为秒。系统将每隔一段时间检查一次新邮件。默认每180秒收取一次新邮件。 |
提示:
(1) 系统中已经预置了常用的邮件系统的SMTP服务器信息。如果您使用的邮件系统在系统预置的列表中,可以不用输入相应的服务器信息,系统会自动填写。
(2) 如果不清楚您的邮件服务器信息,请咨询您的邮件系统管理员。
(3) 如果您正在使用Foxmail或是Outlook等邮件客户端进行收发邮件操作,也可以按照Foxmail或是Outlook中的SMTP、POP和IMAP的配置在EasySQLMAIL中配置发信邮件账号的邮件服务器信息。
QQ邮箱、新浪邮箱、网易邮箱等一些邮件系统需要在浏览器中登录相应邮件系统后开启邮件账号的SMTP发信功能,并设置单独的授权码,将授权码输入到EasySQLMAIL发信邮件账号的“邮件系统用户密码”中才能正常发信。
以下是各邮件系统的SMTP服务和授权码帮助文档:
QQ邮箱:https://service.mail.qq.com/detail/0/75
新浪邮箱:https://help.sina.com.cn/comquestiondetail/view/1567/
| 通过Socks5代理服务器连接 |
选择是否通过Socks5代理服务器连接邮件服务器 |
| 代理服务器IP地址或主机名 |
如果启用了“通过Socks5代理服务器连接”选项,则在这里输入Socks5代理服务器的主机名或IP地址 |
| 代理服务器端口 |
如果启用了“通过Socks5代理服务器连接”选项,则在这里输入Socks5代理服务器的端口 |
| 通过HTTP代理服务器连接 |
是否通过HTTP代理服务器连接邮件服务器。参见:HTTP代理服务器配置 |
| 从服务器删除已收取的数据提取邮件 |
如果启用了“允许接受数据提取申请”选项,可以选择是否从邮件服务器删除已经收取的数据提取申请邮件,以提高邮件收取速度。 |
| 发信时暗送一封给自己,以判断发信是否成功 |
如果启用此选项,系统在发送邮件时会暗送一封邮件给发信邮件账号自己,并且会定时读取收件箱,检查是否收到指定的邮件以判断邮件是否正常发出。 提示:在有些邮件服务器将邮件误判为垃圾邮件拒绝发送且没有任何错误提示的情况下,可以使用此选项判断邮件是否发送成功。 |
| 发信时保持原始的发件人信息 |
有一些邮件系统不允许发件人自定义发信人名称,这时可以选择此选项保持原始发件人名称以防止邮件被服务器拒收。 |
| 发件人名称显示为 |
不选择“发信时保持原始的发件人信息”时,可以在这里定义通过此邮箱发出的信件显示的发件人名称。在收件人查看邮件时,这个名称将被显示在发件人信息中。 |
| 每次连接时的最大发信数量 |
设置每次连接到SMTP邮件服务器时的最大发信数量。每次发信超过此数量时,系统将断开SMTP连接,下次连接时再发送剩余的邮件。 |
| 发信限额设置 |
设置邮件账号单位时间内的最大发信数量。如果单位时间内的发信数量超出设置的数量后,系统暂停使用此账号发信,直到下一个单位时间。例如,下面的配置表示“从2024-03-14 00:00开始,每1天最多使用此账号发送1000个邮件”:
|
在系统中同时配置了多个发信邮件账号时,系统管理员可以为发信邮件账号设置优先级。系统发送邮件时,将优先使用优先级高的发信账号进行发送,当优先级高的发信账号发送失败时,再依次选择优先级较低的发信账号进行发送。
调整发信账号优先级对话框
系统管理员可以在这个对话框中使用“上移”、“下移”按钮调整发信账号的优先级。系统在发送邮件时,位置靠前的发信邮件账号将优先被使用。
在推送消息到企业微信前,需要在系统中配置企业微信消息通道。EasySQLMAIL支持配置多个企业微信消息通道,并可以为每个消息通道配置多个应用,用于推送不同类型的信息。
点击控制台界面左侧菜单“企业微信消息通道管理”,然后点击“企业微信消息通道管理”界面上的“添加企业微信”按钮,并在对话框中输入企业微信的名称和企业微信的CorpID(也称为“企业ID”)。

打开添加企业微信消息通道对话框
企业微信的CorpID是每个企业在企业微信中的唯一标识符。登录企业微信后台管理界面后点击界面右侧的“我的企业”,在页面下方可以查询到企业的“CorpID”(即“企业ID”)。

查询企业的CorpID
输入CorpID并保存企业微信基本信息后,需要继续配置用于发送消息的应用信息。

保存保存企业微信基本信息后,继续添加企业微信应用
企业微信应用的配置方法参见添加企业微信应用。
EasySQLMAIL进行信息推送时,需要通过企业微信的应用发送信息。管理员可以在系统中为一个企业微信消息通道配置多个企业微信应用,使用每个应用来推送不同的信息。

企业微信应用管理界面
管理员可以在应用管理界面中停用、删除应用。应用被停用或删除后,系统将不再使用此应用推送消息,所有要求使用此应用推送的消息将处于“等待发送”状态。

添加企业微信应用对话框
在这个对话框中输入企业微信应用的AgentID、Secret。AgentID和Secret可以按如下方法查询:
(1) 登录企业微信后台管理界面,点击“应用管理”,在应用列表中找到要添加的应用:

在企业微信管理界面中找到要添加的应用
如果界面中没有自建应用,可以点击“创建应用”,创建一个新的自建应用。
(2) 点击要添加到EasySQLMAIL的应用的图标,打开应用详情页面。在详情页面中可以看到应用的AgentID。点击Secret项目后的“查看”按钮,企业微信会将应用的Secret发送到管理员的企业微信中。管理员将AgentID和Secret复制到EasySQLMAIL的配置对话框中即可。

查询应用的AgentID和Secret
输入AgentID和Secret后,点击“获取应用名称”按钮,系统将自动从企业微信平台将应用的名称读取到“应用名称”文本框中。

自动获取应用名称
在“接收测试消息的用户账号”输入一个用于接收测试消息的企业微信账号,并点击“测试”按钮,系统会通过指定的应用向此企业微信账号发送一条测试消息。收到测试消息就表明应用的配置已经正确。

输入测试员工的账号并发送测试消息

系统发送的测试消息
收到测试消息确认配置信息无误后,点击配置界面中的“确定”按钮,保存应用配置。这时系统会自动从企业微信平台读取企业微信的通信录信息到EasySQLMAIL中,后续配置任务时会用到这些信息。

系统从企业微信平台读取通信录到本地
上述配置完成后,EasySQLMAIL就可以通过企业微信推送信息了。
提示:每个应用只能发送消息给“应用可见范围”内的员工。“应用可见范围”可以在企业微信后台管理界面的应用配置中设置:

设置应用可见范围
EasySQLMAIL支持通过企业微信群机器人推送消息到企业微信群。具体配置方法如下:
(1) 在企业微信中群中创建群机器人:打开企业微信电脑版,在要添加群机器人的群聊上点击右键,选择“添加群机器人”按钮。然后按向导提示进行即可。

在群聊上点击右键,选择“添加群机器人”菜单项
(2) 群机器人创建完成后,将群机器人的Webhook复制出来,保存备用。

将Webhook复制出来保存备用
注意: Webhook中包含了群机器人的调用信息,请妥善保管以防泄密。
回到EasySQLMAIL配置界面,在“企业微信属性“对话框的“群机器人”Tab页中点击“添加群机器人”按钮,打开添加群机器人对话框。

“添加群机器人”对话框
在这个对话框中输入群机器人名称和上一步中获取到的群机器的人Webhook地址。然后点击“测试”按钮,系统会通过群机器人发送一条测试消息到对应的群中。

群机器人收到的测试消息
收到测试消息后,表明群机器人的配置已经正确,在添加群机器人对话框中点击“确定”按钮保存配置即可。
实际使用时,在任务配置中选择群机器作为任务的收件人即可。
提示:
(1) 输入群机器人名称时建议在名称前加上“群机器人-xxx”字样,以便在后续选用时区分群机器人收件人和普通收件人。
(2) 企业微信群消息只能在企业微信客户端中查看,普通微信客户端中无法查看企业微信群消息。
(3) 通过群机器人发送企业微信群消息时,只能发送文字消息、markdown消息、图片(2M以内)或文件(不大于20M)。每分钟群消息发送量不能大于20条。
(4) 通过群机器人发送钉钉群消息时,只能发送文字和markdown消息。每分钟群消息发送量不能大于20条。
在推送消息到钉钉前,需要在系统中配置钉钉消息通道。EasySQLMAIL支持配置多个钉钉消息通道。
点击控制台界面左侧菜单“钉钉消息通道管理”,然后点击“钉钉消息通道管理”界面上的“添加钉钉”按钮。

添加钉钉消息通道对框
在“钉钉名称”中为消息通道输入一个名称以便于后续管理。然后输入钉钉应用的AppKey和AppSecret。钉钉应用的AppKey和AppSecret查询方法如下:
(1) 钉钉管理员登录钉钉开放平台https://open-dev.dingtalk.com/。然后点击菜单上的“应用开发”->”企业内部开发”,打开钉钉应用列表:

打开钉钉开发者后台界面的应用列表
(2) 在应用列表中点击“H5微应用”:

点击“H5微应用”
(3) 在H5微应用列表中,点击要用于推送钉钉消息的H5微应用,进入微应用信息页面。(如果H5微应用列表为空,可以点击界面右上方的“创建应用”按钮创建一个新的H5微应用)

点击微应用打开微应用信息界面
(4) 进入H5微应信息界面后,即可看到H5微应用AppKey和AppSecret。将这两个值复制到EasySQLMAIL的钉钉通道配置界面中的对应文本框中即可。

查询到AppKey和AppSecret
注意:AppKey和AppSecret是钉钉应用的关键信息,请妥善保管,以防止泄密。
(5) 在EasySQLMAIL钉钉配置界面中输入AppKey和AppSecret,点击“确定”按钮后,系统会从钉钉平台将钉钉通信录、应用列表读取到EasySQLMAIL中以备后续配置任务时使用。

读取钉钉应用列表和通信录列表
注意:
(1) 如果在读取通信录时发生错误“读取部门列表出错:访问ip不在白名单之中,请参考FAQ:https://developers.dingtalk.com/document/app/app-faq/title-9eg-fgn-1ml,request ip=xxxx”,请按如下方式处理:
· 进入钉钉应用管理界面,点击界面左侧的“开发管理”菜单,然后点击界面右侧的“修改”按钮,并在“服务器出口IP”输入您的互联网出口IP地址并保存。

将企业IP地址添加到“服务器出口IP”
· 保存成功后,回到EasySQLMAIL的钉钉消息通道管理界面,点击界面右侧的“管理应用列表和企业成员”,并点击“重新从钉钉平台读取”按钮。这时系统会重新从钉钉平台读取通信录及应用信息。

重新从钉钉平台读取通信录和应用列表
(2) 用于推送信息的H5微应用需要在钉钉平台上具有“企业员工手机号信息,邮箱等个人信息,通讯录部门信息读权限,成员信息读权限,通讯录部门成员读权限”。如果没有为应用打开这些权限,请按如下方式打开权限:进入钉钉开发者平台的H5微应用信息界面,点击界面左侧的“权限管理”菜单项,在“权限范围”中选择应用可见的范围,并在“接口权限”->”通信录管理”中为应用打开相应的权限。

为应用打开通信录权限
(1) 在钉钉PC客户端中打开要添加机器人的群,点击界面右侧的“群设置”按钮,然后点击“群智能助手”菜单项:

点击“群设置按钮”

点击“群智能助手”菜单项
(2) 在“智能群助手”中点击”添加机器人”:

点击“添加机器人”菜单项

点击“添加机器人”右侧的”+”号

选择“自定义”机器人

输入机器人名字,并为机器人选择安全选项
(3) 为保证群机器人安全,建议启用“IP地址(段)”选项,并将您的互联网出口地址添加到允许调用此群机器人的IP地址列表中。

启用”IP地址(段)”选项,并添加IP地址
(4) 机器人添加完成后,将机器人的Webhook复制并保存到安全的地方。

将群机器人的Webhook复制并保存
注意:Webhook中包含了群机器人的调用信息,请妥善保管以防泄密。

在钉钉消息通道管理中打开“添加钉钉群机器人”对话框
在这个对话框中输入群机器人的名称和上一步中得到的Webhook。输入完成后,点击“测试”按钮,系统会通过群机器人向钉钉群发送一条测试消息。收到测试消息后,表明群机器人的配置正确,这时点击“确定”按钮保存群机器人信息即可。

收到EasySQLMAIL发送的群机器人测试消息
提示:
(1) 输入群机器人名称时建议在名称前加上“群机器人-xxx”字样,以便在后续选用时区分群机器人收件人和普通收件人。
(2) 目前只支持向钉钉群机器人推送文字消息和markdown消息,不能推送文件、图片消息。
管理员可以在钉钉消息通道中对钉钉应用进行管理。在钉钉应用管理界面中,管理员可以停用钉钉应用或查询应用的发送日志。钉钉应用停用后,系统将不再使用此应用来推送消息。需要由此应用推送的消息的状态将一直是“等待发送”。

钉钉应用管理界面
点击应用列表中的“应用名称”可以打开应用配置界面。管理员可以在钉钉应用配置界面中使用指定应用发送测试消息,或查看应用的可见范围。

钉钉应用配置界面
EasySQLMAIL支持定时自动从企业微信或钉钉平台将通信录和员工列表读取到本地,以便于任务配置和联系人管理。

自动读取员工列表
启用此选项后,默认每天读取一次通信录。您可以修改读取的间隔时间。最小读取时间间隔为1小时。如需要手动读取通信录,请按如下方式操作:
(1) 企业微信:

手动读取企业微信通信录
(2) 钉钉:

手动读取钉钉通信录
启用此选项后,系统读取通信录时会将通信录中的电子邮件地址、手机号码等信息同步到EasySQLMAIL的地址薄中。管理员只需要在企业微信或钉钉平台上为员工设置好电子邮件地址等信息,系统读取通信录时自动在系统地址薄中创建或修改对应员工的信息,这样可以实现员工信息的一处理维护多处使用。
在同步通信录到系统地址薄时,系统以电子邮件地址为关键字段。电子邮件地址、手机号不能重复。
启用此选项后,从通信录同步到系统地址薄的员工将可以使用电子邮件地址或是手机号登录。EasySQLMAIL的企业信息查询平台。
1.0.1215版本开始提供此选项。启用此选项后,系统推送钉钉消息后,会在后台自动读取钉钉平台的消息处理进度,并同步更新本地的钉钉消息推送状态。此选项可以帮助管理员准确掌握钉钉消息的推送结果,但是会消耗钉钉API调用额度(推送一条消息大约会消耗2-3次API额度)。
参见钉钉文档:
获取工作通知消息的发送进度 https://open.dingtalk.com/document/orgapp/obtain-the-sending-progress-of-asynchronous-sending-of-enterprise-session
获取工作通知消息的发送结果 https://open.dingtalk.com/document/orgapp/gets-the-result-of-sending-messages-asynchronously-to-the-enterprise
数据源信息中包含了数据库的类型、数据库地址、用户名等信息。EasySQLMAIL通过这些信息来确定如何连接到数据库。因此,在开始使用EasySQLMAIL之前您需要将数据源的信息配置到系统中。EasySQLMAIL支持下列类型的数据库:
Oracle
MySQL
SQL Server
PostgreSQL
Informix
系统管理员或有“创建数据源”权限的用户可以在“数据源管理”界面中管理数据源。系统管理员可以管理系统中所有的数据源,其他用户只能管理自己创建的数据源。
提示:
(1) 为确保能够安全、正确地使用EasySQLMAIL的各项功能,在开始配置数据源信息前,请仔细阅读数据源的安全建议了解有关正确使用数据源的知识。
(2) 数据库服务器与EasySQLMAIL可以不在同一服务器上。
点击EasySQLMAIL控制台左侧菜单条中的“数据源管理”菜单项,然后在“数据源管理”界面上点击“创建新数据源”按钮。

创建新数据源对话框
在这个对话框中:
| 数据源信息 |
|
| 数据源ID |
由EasySQLMAIL系统自动生成 |
| 数据库类型 |
选择数据源的数据库类型。 |
| 数据源名称 |
为数据源输入一个名称以便后续进行管理和使用。 |
| 数据库TNS/数据库主机地址 |
对于Oracle数据库,在这里输入数据库服务器的TNS名称或是Oracle的TNS配置字符串,对于其它数据库,在这里输入数据库主机的IP地址或主机名。如不清楚该项配置,请与您的DBA联系获取。
注意:如果您使用的是Oracle数据库,数据库的TNS可以按如下格式填写: (1)服务器IP或主机名:数据库端口号:数据库实例名,例如:10.0.42.122:1521:orcl,测试是否能连通。 (2)从已安装的Oracle客户端中的tnsnames.ora文件中找到要连接的数据库的TNS,将TNS字符串前部的名称和等号去掉,将后面的红字部份的字符复制到数据源的TNS文本框中。例如:
DB1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.42.122)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =ORCL) ) ) 将上述TNS配置中红色部份的字符填写到数据源的TNS文本框中即可。 |
| 服务器端口 |
对于非Oracle类型的数据库,可以在这里设置数据库使用的端口号。 Informix数据库无默认端口,您必须指定一个端口。 其它类型的数据库,如果为空,EasySQLMAIL将使用指定数据库的默认端口。MS SQL Server的默认端口是1433,MySQL的默认端口是3306,PostgreSQL的默认端口是5432。 |
| 数据库用户名 |
设置连接到此数据源时的数据库用户名。 注意:为保证数据库安全,不建议使用sa、root、sys或system这类系统数据库账号或是生产账号作为数据源的用户名。应该创建一些权限较小的数据库账号供EasySQLMAIL使用。详情参见数据源安全 |
| 数据库密码 |
指定连接到此数据源时的数据库密码 |
| 默认数据库 |
对于MySQL、PostgreSQL、SQL Server和Informix数据库,可以在这里指定连接到数据源后默认使用的数据库。配置数据源时必须选择一个默认数据库。 输入数据库地址、用户名和密码后,点击“默认数据库”右侧的圆形图标,系统会列出数据源中的数据库,选择一个数据库作为默认数据库即可。
提示:Oracle数据库不需要配置默认数据库。 |
| JDBC选项 |
可以在这里为数据源输入一些JDBC连接字符串的选项,例如在连接MySQL数据库时可能需要输入“serverTimezone=GMT%2B8”以确定查询使用的时区。 |
| 数据源说明 |
在这里输入一些对该数据源的说明信息 |
| 用户 |
指定哪些用户可以使用此数据源。系统默认只有数据源的创建者和admin用户可以使用此数据源。如果要让其它用户使用此数据源,请在数据源对话框的“用户”列表中勾选相应的用户名。 |
数据源信息输入完成后,点击“测试数据源”按钮,系统将测试连接到数据源。连接成功后,点击“确定”保存数据源信息即可。

测试数据源连接
用户可以在这里设置此数据源的外部接口选项。有关外部接口功能的详细信息请参见“外部接口功能”。
在这个界面中:
| 允许从该数据源上的接口表中发送邮件 |
是否允许从此数据源上的接口表中调用EasySQLMAIL的邮件发送功能。 |
| 允许从该数据源上的接口表向系统地址薄中不存在的邮件地址发送邮件 |
是否允许从数据源和接口表中向系统地址薄中不存在的邮件地址发送邮件。默认情况下EasySQLMAIL不允许向地址薄中不存在的邮件地址发信。选择此选项后,则可以在此数据源上通过接口表向地址薄中不存在的邮件地址发送邮件。 |
| 允许从该数据源上的接口表中启动数据提取任务 |
是否允许从数据源的接口表中触发一个任务。有关接口触发任务的更多信息请见“外部接口功能”。 启用此选项后,还需要设置允许从接口触发的任务列表。
|
| 允许从该数据源上的接口表中发送企业微信或钉钉消息 |
是否允许从数据源的接口表中调用EasySQLMAIL的企业微信消息或钉钉消息发送功能。如果选择此选项,则允许从easysqlmail_wx_intf中通过指定的应用发送企业微信或钉钉消息。 |
| 外部接口表读取间隔 |
设置读取外部接口表的间隔时间,单位为“秒”。默认情况下EasySQLMAIL每60秒读取一次外部接口表。在实时要求高,数据库比较空闲的情况下,可以将这个参数设置为“5秒”,表示每隔5秒读取一次接口表中的待处理记录。 |
| 自动提交被更改的数据(不使用事务) |
设置在数据源上执行了UPDATE、INSERT、DELETE等语句时是否立即提交。 默认情况下,EasySQLMAIL连接数据源时启用了事务支持,执行数据修改语句后需要用commit语句显式提交事务后修改才会生效。 启用了此选项后,执行数据修改语句后会立即生效,不需要再执行commit语句。 |
| 允许从此数据源访问地址簿数据 |
仅对“默认数据源”可选。选择此选项后,可以在默认数据源上访问EasySQLMAIL的地址簿表。 |
| 允许从此数据源访问企业微信和钉钉通信录数据 |
仅对“默认数据源”可选。选择此选项后,可以在默认数据源上访问EasySQLMAIL缓存在本地的企业微信和钉钉通信录数据。 |
EasySQLMAIL安装时会创建一个“默认数据源”。“默认数据源”的数据库类型为PostgreSQL。您可以在这个数据源中利用PostgreSQL的函数、SQL语句来完成一些数据计算工作。具体使用方法请参考PostgreSQL数据库的相关文档。
地址薄即EasySQLMAIL的联系人列表。这个列表中包含了EasySQLMAIL可以向其发送邮件的联系人的信息。
为了保证信息安全,EasySQLMAIL规定了在发送电子邮件时,只允许将任务生成的邮件数据发送给EasySQLMAIL地址薄中的联系人。(系统管理员也可以在需要时通过选择“允许此任务发送邮件给地址薄中不存在的邮件地址”选择逾越此规则)
默认情况下,地址簿由系统管理员负责维护。系统管理员也可以在“用户管理”中将地址薄管理权限指派给其他用户。

打开“新建联系人”对话框
在这个对话框中:
| 基本信息 |
|
| 姓名 |
输入联系人的姓名 |
| 电子邮件地址 |
输入联系人的电子邮件地址。一个联系人只能有一个电子邮件地址,地址薄中的电子邮件地址必须唯一,不能重复。 |
| 移动电话 |
输入联系人的移动电话号码(可选)。一个联系人只能有一个移动电话号码,地址薄中的移动电话号码必须唯一,不能重复。 |
| 企业微信或钉钉用户名 |
可以在这里为联系人选择对应的企业微信或钉钉账号。在联系人登录EasySQLMAIL企业信息查询平台时,如果启用了登录验证码选项,系统会将数字验证码发送到联系人对应的企业微信或钉钉账号中。 |
| 联系人信息来源 |
由系统自动填写。指出联系人的信息来源(管理员手动添加,或是从企业微信、钉钉通信录读取) |
| 其它选项 |
|
| 允许登录查询服务器 |
是否允此联系人登录EasySQLMAIL企业信息查询平台。默认为“是” |
| 企业数据发布平台账号 |
设置联系人登录EasySQLMAIL企业信息查询平台的账号。”企业数据查询平台账号”必须唯一。 联系人登录EasySQLMAIL企业信息查询平台时,可以使用自己的邮件地址或手机号作为登录账号,也可以使用系统管理员指定的这个“企业数据发布平台账号”作为登录账号。 |
| 企业数据发布平台密码 |
设置联系人登录EasySQLMAIL企业信息查询平台的密码。如果在这里修改了此密码,则联系人下次登录企业信息查询平台时必须使用新密码来登录,并且在登录成功后必须进行一次修改登录密码操作。 |
| 下次登录企业数据发布平台时必须修改密码 |
如果选择此选项,则联系人下次登录EasySQLMAIL企业信息查询平台后,系统会要求联系人修改登录密码。 |
| 本地应用菜单权限 |
如果配置了本地应用,可以在这里指定联系人可以使用哪些本地应用的菜单项。 |
关于“EasySQLMAIL企业信息查询平台”的详细信息请参见EasySQLMAIL企业信息查询平台。
管理员可以将所有联系人信息在Excel中编辑好后批量导入到EasySQLMAIL中。

联系人信息表格

上传要导入的表格文件
“覆盖以前邮件地址相同的旧联系人信息”选项:如果选择了“覆盖以前邮件地址相同的旧联系人信息”选项,当上传的表格中的电子邮件在系统地址薄中已经存在时,系统会用表格中的新信息覆盖地址薄中已经存在的旧信息。如果不选择此选项,当要导入的联系人的邮件地址在EasySQLMAIL的地址薄中已经存在时,系统将会报错:“邮件地址xxx已经存在”。
如果上传的表格中的“联系人组”在地址薄的“联系人组”中不存在,系统会自动创建一个新的联系人组。
EasySQLMAIL中允许建立联系人组。在配置信息推送任务时,可以选择“联系人组”作为邮件的收件人。当选择“联系人组”作为邮件收件人时,组中的成员将全部收到任务推送的邮件。
一个联系人可以属于多个联系人组。

“新建联系人组”对话框
提示:
(1) 系统管理可以设置哪些用户能够使用指定的联系人组。
(2) 非系统管理员创建的联系人组只能被创建人自己使用。如果要让创建人以外的其他用户使用联系人组,需要由系统管理员设置可以使用联系人组的用户列表。
为便于员工信息管理,EasySQLMAIL允许从企业微信、钉钉平台将通信录同步到EasySQLMAIL的地址薄中。
系统管理员只需要在企业微信或钉钉平台上设置好员工的邮件地址、手机号码,即可在EasySQLMAIL中使用这些信息。
在对应消息通道的“高级选项”中选择“将通信录信息同步到系统的地址薄中”选项并保存消息通道配置后,下次从企业微信或钉钉平台读取通信录时,系统会将通信录的员工列表同步保存到本地的地址簿中。

启用消息通道的“将通信录信息同步到系统的地址薄中”选项
EasySQLMAIL支持多用户。系统管理员可以为每个用户单独分配一个登录账号,用户使用自己的账号登录到EasySQLMAIL控制台中进行任务配置和管理操作。
系统管理员可以在EasySQLMAIL的用户管理界面中增加或删除EasySQLMAIL的用户。

打开“新建用户”对话框
在这个对话框中:
| 登录账号 |
输入新用户的登录账号,用户登录账号不区分大小写,且必须唯一 |
| 用户名称 |
输入新用户的名称 |
| 登录密码 |
输入新用户的初始登录密码。用户第一次登录后,系统将强制要求用户修改登录密码。 |
| 登录验证码发送方式 |
管理员可以为每个用户指定不同的登录验证码发送方式。可选项有: · 与系统配置一致:使用系统设置中设定的登录验证码发送方式 · 发送到用户的电子邮箱:将登录验证码发送到用户的电子邮箱 · 发送到用户的企业微信或钉钉帐号:将登录验证码发送到用户的企业微信或钉钉账号 参见 登录数字验证码 |
| 电子邮件地址 |
设置用户的电子邮件地址。系统会将与此用户有关的各种事件通知(例如登录失败通知,任务运行日志等)发送到这个邮箱中。 |
| 企业微信或钉钉用户名 |
如果管理员设置将登录验证码发送到用户的企业微信或钉钉账号,则需要在这里设置用户的企业微信或钉钉账号以便接收登录验证码。 |
| 用户权限 |
设置用户的操作权限 |
| 下次登录必须更改密码 |
如果选择此选项,则用户下次登录时必须修改密码后才能进入EasySQLMAIL控制台 |
| 用户帐号已停用 |
如果选择此选项,此用户将不能登录EasySQLMAIL控制台。 |
提示:停用或删除用户后,用户创建的任务任然会按执行计划自动运行。
在EasySQLMAIL系统中,系统管理员(admin)拥有全部操作权限。其他用户可用的操作权限类型有以下几种:
EasySQLMAIL为管理员提供了非富的系统选项以使EasySQLMAIL能够更好地适应您的企业环境。点击系统工具栏中的配置按钮可以打开“系统设置”对话框:

系统设置对话框
在这个对话框中:
| 系统信息 |
|
| 系统名称 |
为系统设置自定义名称,例如“XX公司信息推送信息”。此名称将被显示在控制台界面上以及系统发出的通知邮件中。 |
| 管理邮箱地址 |
在这里设置系统管理员的邮箱地址。系统将把运行报告、告警信息等内容发送到管理邮箱地址中。如果有多个管理邮箱地址,可在多个邮箱地址之间用“;”(分号)进行分隔。 |
| 系统运行报告发送时间和间隔 |
系统将在指定的时间段内按照设置的间隔时间将系统运行报告发送到管理邮箱地址中。 |
| 仅在系统有错误时才将报告发送给我 |
选择此选项后,在每次生成运行报告时,如果报告中包含有错误信息,就将报告发送给系统管理员,否则就只生成运行报告,不发送邮件。系统管理员可以登录到 EasySQLMAIL的WEB控制台或是在EasySQLMAIL企业信息查询平台中查询系统运行报告。 |
| 日志选项 |
|
| 系统运行日志保留时间 |
设置系统运行日志的保留时间。超过此时间的运行日志将被自动删除。 |
| 任务数据邮件和任务运行信息保留时间 |
设置任务生成的邮件、消息和任务运行日志的保留时间。超出此期限的任务日志和任务生成的邮件及消息将被自动删除。 任务日志和邮件被删除后,EasySQLMAIL企业信息查询平台将不能再查询到对应的邮件内容。 |
| 系统邮件记录保留时间 |
设置系统邮件(例如系统运行日志、任务执行结果通知等)的保留时间。超过此时间的系统邮件将被自动删除。 邮件被删除后,EasySQLMAIL企业信息查询平台将不能再查询到对应的邮件内容。 |
| 服务和全局选项 |
|
| 服务的最小内存使用量 |
设置指定服务的最小内存使用量,单位为MB。该参数等同于jvm的xms参数。该参数是一个大于100的整数。在32位平台上,该参数不能大于700M,在64位平台上没有限制,但最大值应该根据系统的物理内存量来参考设置。 |
| 服务的最大内存使用量 |
设置指定服务的最大内存使用量,单位为MB。该参数等同于jvm的xmx参数。该参数是一个大于100的整数。在32位平台上,该参数不能大于700M,在64位平台上没有限制,但最大值应该根据系统的物理内存量来参考设置。 |
| 控制台WEB服务端口 |
指EasySQLMAIL的Web控制台服务端口,浏览器通过该端口访问EasySQLMAIL的Web控制台。默认值为9110。 |
| 企业查询接口HTTP服务端口 |
指EasySQLMAIL的企业查询接口服务的端口号。企业信息查询平台在查询邮件和数据时,会使用HTTP协议调用EasySQLMAIL的企业查询服务接口。企业查询接口服务端口指明了在哪个端口中接受企业数据发布平台的调用。该参数的默认值为9120。 |
| 企业查询接口HTTPS服务端口 |
指EasySQLMAIL的企业查询接口服务的HTTPS端口号。企业信息查询平台在查询邮件和数据时,会使用HTTPS协议调用EasySQLMAIL的企业查询服务接口。企业查询接口服务端口指明了在哪个端口中接受企业数据发布平台的调用。该参数的默认值为9121。 |
| 最大同时运行任务数 |
设置同时最多启动的任务数。 为保证系统安全稳定运行,在同一时间内请求执行的任务数达到此数值时,后续的任务将会被排队等待运行,直到队列中有任务完成后才执行新的任务。此参数只对“单进程模式”运行的任务有效,在容器中运行的任务的最大运行数量在任务容器中单独设置。参见使用任务容器提高任务的执行效率 |
| 任务最大运行时间 |
设置任务运行实例的最大时间。为避免一个失去响应的任务实例长时间运行占用系统资源,如果一个任务运行时间超此数值时,任务将被强行中止。 |
| 重启系统时,未完成的任务处理策略 |
设置重启系统时如何处理上次停止系统时未完成(状态为“正在运行”)的任务实例。 · 丢弃,不再运行:任务实例将被丢弃不再运行 · 待系统重启后重新运行被中断的任务:系统重启后重新运行被中断的任务实例。 |
| IP安全选项 |
|
| 允许访问WEB控制台的IP地址 |
指定允许访问EasySQLMAIL的WEB控制台的IP地址。 出于安全考虑,默认情况下只有服务器本机允许访问EasySQLMAIL的WEB控制台界面。您也可以在这指定其它允许访问EasySQLMAIL的WEB控制台的IP地址。 如果要允许某一子网都可以访问,可以在IP地址的最后一段输入通配符号 "*"。例如192.168.1.*,表示允许所有192.168.1这个网段的计算机访问。参见网络和密码安全 |
| 使用安全HTTP协议(HTTPS)连接WEB控制台界面 |
启用"使用安全HTTP协议(HTTPS)连接WEB管理界面"后,客户端浏览器与服务器的通信将使SSL加密,可以增强通信的安全性,保证传输内容不会被第三方截获。参见使用HTTPS保护EasySQLMAIL的WEB控制台 |
| 需要验证客户端证书 |
启用"需要验证客户端证书"选项后,通过HTTPS协议访问EasySQLMAIL的WEB控制台时,服务器会对客户端的HTTPS证书进行验证。如果客户端没有安装相应的HTTPS证书,则不允许访问。参见双向认证HTTPS |
| WEB控制台HTTPS服务端口 |
指定HTTPS协议的端口号,默认为9443。此端口与不能WEB服务端口号相同。 |
| 其它安全设置 |
|
| 用户账号锁定策略 |
设置当用户连续输错WEB控制台登录密码时,锁定用户账号的策略。默认当用户账号连续输错5次密码时将被锁定30分钟。 提前解锁用户账号: · 普通用户帐号可以由系统管理员(admin用户)在“用户管理”中提前解锁 · 系统管理员(admin用户)需要登录EasySQLMAIL所在的主机后运行EasySQLMAIL安装目录下的bin\setup.exe重置密码并在主机上使用浏览器打开http://127.0.0.1:9110/webconsole登录EasySQLMAIL的WEB控制台设置新密码后解锁。 |
| 用户登录WEB控制台时,需要输入数字验证码进行身份验证 |
设置用户登录WEB控制台时是否需要通过电子邮件或企业微信、钉钉发送数字验证码给用户,用户输入收到的数字验证码后完成登录。参见登录数字验证码 |
| 验证码发送方式 |
EasySQLMAIL支持通过电子邮件、企业微信或钉钉发送登录验证码。默认情况下或是管理员未设置用户的企业微信或钉钉账号时,系统将通过电子邮件发送登录数字验证码。参见登录数字验证码 |
| 用于发送验证码的消息通道 |
如果通过电子邮件发送登录数字验证码,可以在这里指定用于发送验证码的发信邮件账号。 |
为了提高EasySQLMAIL系统控制台的安全性,EasySQLMAIL提供了“登录数字验证码”选项。通过启用“登录数字验证码”选项,系统可以在用户登录EasySQLMAIL控制台时通过电子邮件、企业微信或钉钉向用户发送登录数字验证码,用户输入正确的数字验证码后才能够登录EasySQLMAIL控制台进行配置操作。
管理员可以在“系统设置中”->“其它安全设置”中启用“登录数字验证码”选项:

启用“登录数字验证码”选项
验证码发送方式说明:
| 发送到用户的电子邮箱 |
系统将登录数字验证码发送到管理员为用户设置的邮箱中。即下图中标出的这个邮箱地址:
|
| 发送到用户的企业微信或钉钉帐号 |
系统将登录数字验证码发送到管理员为用户设置的企业微信或钉钉账号。即下图中标出的字段:
|
注意:
(1) 如果选择了“发送到用户的企业微信或钉钉帐号”,但没有为用户设置对应的企业微信或钉钉账号时,系统会默认使用电子邮件方式发送验证码。
(2) 管理员可以在用户管理中为每个用户指定不同的验证码发送方式。
(3) 如果验证码发送方式为"发送到用户的电子邮箱",但系统中没有配置可用的发信账号时,将无法登录系统。这时需要重置管理员密码后,以管理员账号(admin)从服务器本机通过http://127.0.0.1:9110/webconsole登录后修改系统配置取消登录验证码选项。
为防止传输内容被第三方截获,增强系统的安全性,EasySQLMAIL中提供了HTTPS协议支持。在设置了“允许访问WEB控制台的IP地址”后,推荐使用“安全HTTP(HTTPS)协议”来访问WEB控制台。
进入EasySQLMAIL的WEB控制台后,点击右上方工具条中的“系统配置”按钮打开“系统设置”对话框并进入“IP安全设置”Tab页,勾选“使用安全HTTP协议(HTTPS)连接WEB管理界面”选项:

启用HTTPS协议支持
注意:
(1) 启用HTTPS协议支持后,需要重启WEB服务后新的配置才能生效。
(2) 启用HTTPS协议支持后,从其它机器访问EasySQLMAIL控制台时,需要输入https://ip地址:9443/webconsole才能访问EasySQLMAIL控制台。
(3) EasySQLMAIL的HTTPS证书是自签证书。在浏览器上访问时可能会出现安全提示,以Chrome浏览器为例,当出现HTTPS证书安全提示时,只需要点击“高级”,然后点击“继续前往xxx”即可。


浏览器显示的HTTPS证书安全提示
启用HTTPS支持后,可在客户端电脑上安装EasySQLMAIL的根证书来避免访问EasySQLMAIL的WEB控制台时出现证书安全提示。具体安装过程如下:
(1) 复制证书文件到客户端电脑:将EasySQLMAIL安装目录下的openssl\cert\03-WEBCONSOLE_CLIENT中的文件ca.easysqlmail.pfx复制到客户端电脑上。
(2) 在客户机上安装根证书:在客户端电脑上双击证书文件ca.easysqlmail.pfx,打开Windows证书安装向导,并点击“下一步”,然后在向导的第三步中输入证书的保护密码并点击“下一步”。保护密码可以在EasySQLMAIL安装目录下的openssl\cert\cert-pwd.txt中查询到。

输入根证书保护密码
(3) 选择证书存储区域为“受信任的根证书颁发机构”:在“证书存储”中点击“浏览”按钮,并选择“受信任的根证书颁发机构”,然后点击“确定”。该操作将会把EasySQLMAIL的根证书存储到“受信任的根证书颁发机构”区域中,后续使用时浏览器将不会出现证书安全警告。选择好后点击“下一步”。

选择证书的存储区域
(4) 根证书完装完成:点击"下一步"后,根证书即完装完成。
如果客户端电脑使用FireFox来访问EasySQLMAIL控制台,请按如下方式安装证书:
(1) 将crt证书复制到客户端电脑:将EasySQLMAIL安装目录下openssl\cert\03-WEBCONSOLE_CLIENT中的文件ca.easysqlmail.crt复制到客户端。
(2) 在FireFox中打开证书管理器:在客户端电脑上打开FireFox浏览器,并进入FireFox的设置界面,找到并点击“证书管理”设置项。打开FireFox后,点击FireFox菜单中的“选项”。

打开FireFox后,点击菜单中的“选项”

在“选项”页面的搜索框中输入“证书”,并点击“查看证书”按钮
(3) 导入根证书到FireFox中:在“证书管理器”中,切换到“证书颁发机构”Tab页,并点击“导入”按钮,选择从服务器复制过来的证书文件ca.easysqlmail.crt。

导入根证书文件到FireFox中

选中“信任由此证书颁发机构来标识网站”,然后点击确定按钮
证书安装完成后,通过浏览器访问EasySQLMAIL控制台时就不会再出现“HTTPS证书安全警告”了。
启用HTTPS支持后,默认HTTPS是单向认证方式,只需要服务器向客户端证明自己的身份。如果需要更为严格的认证,不仅服务器要向客户端证明身份,客户端也需要向服务器提供客户证书进行身份验证,这时可以启用EasySQLMAIL的IP安全中的“需要验证客户端证书”选项。

启用双向HTTPS认证
启用双向认证HTTPS支持后,客户端需要安装EasySQLMAIL的”客户端HTTPS证书”后才能访问EasySQLMAIL控制台。

启用双向HTTPS认证后,客户端访问WEB控制台时需要提供客户证书
客户端HTTPS证书安装方式如下:
(1) 将EasySQLMAIL安装目录下的openssl\cert\03-WEBCONSOLE_CLIENT\client.console.easysqlmail.pfx文件复制到客户端机器上。
(2) IE、Chrome浏览器:在客户端电脑上双击证书文件client.console.easysqlmail.pfx,打开证书安装向导,并点击“下一步”。向导中会要求输入证书保护密码,证书保护密码可以在EasySQLMAIL安装目录下的openssl\cert\cert-pwd.txt中查询到。在选择证书的安装位置时,选择“个人”:

安装客户端证书
(3) FireFox浏览器:进入FireFox的证书管理器后,打开“您的证书”Tab页,然后点击“导入”按钮,并选择证书文件client.console.easysqlmail.pfx。导入证书时会要求输入证书保护密码,证书保护密码可以在EasySQLMAIL安装目录下的openssl\cert\cert-pwd.txt中查询到。

在FireFox中导入客户端证书
安装客户端证书后,访问EasySQLMAIL控制台时,选择名为“client.console.easysqlmail”的证书即可:

访问WEB控制台时选择证书
(1) 启用EasySQLMAIL的HTTPS支持后,仍然可以在安装EasySQLMAIL的机器上通过本机地址http://127.0.0.1:9110/webconsole来访问EasySQLMAIL控制台。
(2) 启用EasySQLMAIL的HTTPS支持后,从其它机器访问EasySQLMAIL的WEB控制台时,将强制使用HTTPS协议,访问的URL将从“http://ip地址:9110/webconsole”改变为“https://ip地址:9443/webconsole”。
(3) 在启用HTTPS支持后如果发现无法访问WEB控制台,可以由管理员在安装EasySQLMAIL的服务器主机上通过http://127.0.0.1:9110/webconsole进入控制台取消HTTPS支持,然后查找无法访问HTTPS的原因。
(4) EasySQLMAIL安装完成后,EasySQLMAIL安装目录下的openssl\cert中存储了EasySQLMAIL证书的私钥等重要信息,请妥善保管这些文件以防止泄密。
(5) EasySQLMAIL生成的证书为“自签署证书”,在安装和使用证书时某些安全软件(例如360安全软件)可能会有安全提示。
为保证EasySQLMAIL系统的稳定运行,EasySQLMAIL将系统的各个功能模块划分为单独的服务进程。EasySQLMAIL系统启动后,会运行多个名为sqlmailcore.exe的进程,每个进程对应一个EasySQLMAIL服务模块。管理员登录EasySQLMAIL控制台后,可以在“系统状态”Tab页中查看到每个服务的进程ID、运行状态、内存占用等信息:

系统状态监控界面

服务模块内存使用记录图表
在“系统状态”页面中,管理员可以进一步看到每个服务的内存使用记录和服务日志,并可以重启EasySQLMAIL系统或是某一个EasySQLMAIL服务模块。
EasySQLMAIL的服务模块说明如下:
| 核心服务 |
负责管理EasySQLMAIL的启动信息和监控各个服务的运行状态 |
| 任务控制服务 |
负责调度和管理任务及任务容器的运行 |
| 消息推送服务 |
负责执行信息推送,并监控信息推送状态 |
| 消息接收服务 |
如果启用了消息接收选项,则由“消息接收服务”负责接收邮件或其它消息,并进行消息分析和处理 |
| 测试管理服务 |
负责运行和管理测试过程(例如任务测试、数据源测试等) |
| WEB服务 |
负责运行和管理EasySQLMAIL的WEB控制台程序 |
| 企业查询接口服务 |
负责运行和管理企业查询接口,为企业信息查询平台提供查询功能 |
EasySQLMAIL支持通过HTTP代理服务器连接邮件发送服务器、钉钉和企业微信平台。HTTP代理服务器配置方法如下:
(1) 点击菜单“消息通道管理”->“代理服务器管理”,并点击代理服务器管理界面上的“添加”按钮:

打开添加代理服务器对话框
(2) 在这个对话框中:
| 代理服务器类型 |
目前只支持HTTP代理服务器 |
| 代理服务器IP地址 |
输入代理服务器的IP地址或域名 |
| 代理服务器端口 |
输入代理服务器的代理端口 |
| 此服务器需要进行身份验证 |
如果连接代理服务器时需要验证用户名和密码,请勾选此选项 |
| 验证方式 |
目前支持“BASIC AUTHENTICATION”和“NTLM”两种验证方式。 |
| 用户名 |
输入代理服务器的用户名 |
| 密码 |
输入代理服务器的密码 |
| 工作站 |
如果使用NTLM验证方式,则有可能需要输入您的工作站名称 |
| 域 |
如果使用NTLM验证方式,则有可能需要输入您的账号所在的域的名称 |
(3) 信息输入完成后,点击“测试”按钮,系统将测试通过HTTP代理服务器访问互联网。测试成功后保存配置即可。
为便于用户在数据库中进行信息推送,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_WX_INTF接口表,发现新记录后就将记录的内容发送给指定的收件人。
目前,EasySQLMAIL提供了以下几种功能的外部接口调用:
· 邮件发送:允许通过EasySQLMAIL向指定的收件人发送邮件。
· 任务触发:允许从外部口表上启动EasySQLMAIL中的某个数据发布任务,并且允许传入任务的变量。
· 企业微信和钉钉消息发送:允许从外部接口表上向企业微信或钉钉的员工发送文字消息。
系统管理员可以在配置数据源时启用数据源上的外部接口功能。

启用数据源的外部接口功能
在这个对话框中:
| 允许从该数据源上的接口表中发送邮件 |
选择此选项后,将会启动对应数据源上的邮件发送接口功能 |
| 允许从该数据源上的接口表向系统地址薄中不存在的邮件地址发送邮件 |
默认情况下,EasySQLMAIL不允许向地址薄中不存在的邮件地址发信。当选择了此选项后,系统将允许从外部接口表上向地址薄中不存在的邮件地址发送邮件。 |
| 允许从该数据源上的接口表中启动数据提取任务 |
选择此选项后,将允许从此数据源上触发EasySQLMAIL中的信息推送任务。 注意:还需要设置允许从此数据源上触发的任务列表后才能从接口表中触发对应的任务。 |
| 设置允许从此数据源上启动的任务 |
启用了任务触发接口后,需要在这里设置允许从此数据源上触发的任务列表。 注意:如果要触发的任务配置被停用或删除,则不能再从接口表中触发此任务。 |
| 允许从该数据源上的接口表中发送企业微信或钉钉消息 |
选择此选项后,将允许从此数据源上调用企业微信或钉钉的消息发送功能(仅能发送文字消息)。 |
| 选择可从此数据源上发送消息的应用 |
启用了企业微信和钉钉消息发送接口后,需要选择可用哪些企业微信或钉钉应用来发送接口上的消息。(可多选) |
| 接口表读取间隔时间 |
设置读取接口表新记录的间隔时间,单位为“秒”。默认为每60秒读取一次接口表的待处理记录。 |

外部接口处理过程
启用外部接口功能后,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还会在数据源上创建名为seq_easysqlmail_intf_id和seq_easysqlmail_wx_intf_id的序列。并在EASYSQLMAIL_INTF和EASYSQLMAIL_WX_INTF表上创建INSERT触发器,用于在插入记录时生成新记录的REC_ID。
EASYSQLMAIL_INTF表用于接受邮件发送或任务执行请求。表结构如下:
| 字段名称 |
数据类型 |
说明 |
| REC_ID |
NUMBER |
记录的唯一ID。主键。Oracle数据库通过触发器insert_easysqlmail_intf_id从seq_easysqlmail_wx_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"(发送一个邮件),则在这里指定邮件的收件人,多个收件人之间用逗号进行分隔。例如 test1@qq.com,test2@qq.com 或 "用户名1<test1@qq.com>,用户名2<test2@qq.com>" |
| COPY_TO |
VARCHAR |
如果OPER_TYPE="M"(发送一个邮件),则可以在这里指定邮件的抄送人,多个收件人之间用逗号进行分隔。例如 test1@qq.com,test1@qq.com 或 "用户名1<test1@qq.com>,用户名2<test2@qq.com>" |
| TASK_PARAMS |
VARCHAR |
如果OPER_TYPE="T"(触发一个指定的任务),则可以在这里设置要传递给任务的变量值。格式为"参数名=参数值;",多个参数之间用";"号隔开。Informix最大长度为2000,其它数据库最大长度为4000。 注意:需要在任务配置中为变量选择了“允许从外部接口表中传入变量值” 选项后,任务才能接受从外部接口中传入此变量的值,否则在任务执行时会出现“不允许从外部接口传入此变量”错误。参见变量的选项
|
| EXP_TIME |
DATETIME |
在这里指定邮件发送或任务运行请求记录的过期时间。如果不指定过期时间,默认在24小时后过期。请求记录过期后将不会再被处理。 |
| USE_MAIL_ACCT |
VARCHAR |
如果OPER_TYPE="M",则可以在这里指定使用哪个发信账号发送此邮件,多个邮件账号之间用逗号分隔。如果不指定,EasySQLMAIL会随机选择发信账号发送。在指定发信账号时,可以使用"*"号,表示任意账号。例如: acct1@test.com,acct2@test.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填写。 |
EASYSQLMAIL_WX_INTF表用于接受企业微信或钉钉文字消息发送请求。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个用户。 在企业微信中,如果to_user为@all,表示发给关注了相应应用的所有用户,否则就要给出用户ID列表。 多个用户ID之间使用"|"(竖线)分隔。用户ID可在微信企业号管理平台的“通信录”中查到,也可以在对应消息通道的“管理企业成员”界面中查询到。 |
| TO_PARTY |
VARCHAR |
接收此消息的部门ID列表。多个部门ID之间用"|"(竖线)分隔。最多支持100个部门ID。当to_user为@all,则此值无效。部门ID可在EasySQLMAIL的消息通道管理的对应应用配置中查询到。 |
| TO_TAG |
VARCHAR |
接收此消息的标签ID列表。多个标签ID之间用"|"(竖线)分隔。最多支持100个标签ID。当to_user为@all时此值无效。标签ID可在EasySQLMAIL的微信企业号应用管理中查询到。 注意:仅企业微信支持to_tag选项。 |
| SAFE |
CHAR(1) |
是否使用保密文档选项。0:不使用,1:使用。默认为0。如果使用了保密文档选项,收件人收到的消息将不能转发,不能复制,且浏览时会显示收件人名称的水印。 注意:仅企业微信支持safe选项。 |
| CREATE_TIME |
DATETIME |
请求的创建时间。默认为系统当前时间,用户不需要更改。 |
| EXP_TIME |
DATETIME |
在这里指定消息的过期时间。如果不指定过期时间,默认在24小时后过期。请求过期后将不会再被处理。 |
| STATE |
CHAR(1) |
请求记录的处理状态。A:已生成(默认状态),D:EasySQLMAIL已取,X:删除;C:发送成功;F:发送失败 |
| STATE_TIME |
DATETIME |
请求记录的状态时间。默认为系统当前时间,用户不需要更改。 |
| WX_MESSAGE_ID |
NUMBER |
发送消息时生成的wx_message_id消息ID,由EasySQLMAIL填写。 |
| RESULT_MESSAGE |
VARCHAR |
发送结果的描述,由EasySQLMAIL填写。 |
| SYSTEM_ID |
VARCHAR |
处理此请求的EasySQLMAIL的系统ID,由EasySQLMAIL填写。 |
| DATA_SOURCE_ID |
NUMBER |
处理此请求的数据源ID,由EasySQLMAIL填写。 |
INSERT INTO easysqlmail_intf
(subject,--邮件主题
body, --邮件正文
send_to --收件人邮件地址
)
VALUES ('测试邮件',
'您好,这是测试邮件。',
'test1@qq.com');
INSERT INTO easysqlmail_intf
(subject, --邮件主题
body, --邮件正文
send_to, --收件人邮件地址
body_type --正文类型。发送HTML邮件时填写”HTML”
)
VALUES ('测试邮件',
'您好,这是测试邮件。<span style="color:red;">这里的内容是红字显示</span>',
'test1@qq.com',
'HTML');
INSERT INTO easysqlmail_intf
(oper_type,--操作类型,触发任务时填写”T”
task_id --要触发的任务ID
)
VALUES ('T',
123);
INSERT INTO easysqlmail_intf
(oper_type, --操作类型,触发任务时填写”T”
task_id, --要触发的任务ID
task_params --要传给任务的变量列表
)
VALUES ('T',
123,
'变量1=值1;变量2=值2');
INSERT INTO easysqlmail_wx_intf
(wx_app_id, --用于发送信息的应用ID
content, --信息内容
to_user --收件人列表
)
VALUES (23,
'您好。这是一个测试消息',
'user01|user02');
INSERT INTO easysqlmail_wx_intf
(wx_app_id,--用于发送信息的应用ID
content, --信息内容
to_user --收件人列表
)
VALUES (23,
'您好。这是一个测试消息',
'@all');
INSERT INTO easysqlmail_wx_intf
(wx_app_id, --用于发送信息的应用ID
content, --信息内容
to_party --收件部门ID
)
VALUES (23,
'您好。这是一个测试消息',
'19');
在工作中经常会遇到需要将一些信息手动点对点分发给员工的情况。例如,部门管理员每月从绩效考核系统中将员工的绩效考核情况导出后,通过企业微信、钉钉或电子邮件点对点发给部门的每位员工。为了满足这类需求, EasySQLMAIL中提供了“快速信息分发”功能,用户可以使用此功能来为多个员工进行批量点对点信息发送。
快速信息分发共分为三个步骤:
(1) 管理员在系统中配置快速信息分发模板,并将模板的执行权限分配给其他用户;
(2) 管理员或其他用户在系统中执行分发命令并上传要分发的Excel表格文件,系统根据文件内容生成分发记录;
(3) 管理员或执行命令的用户对生成的分发记录进行检查,确认无误后启动分发过程,系统将信息推送给相应收件人。
其中,第一步”模板配置”只需要执行一次,就可以反复执行以进行信息分发。
在使用快速信息分发功能前,系统管理员需要在“快速信息分发”管理界面中配置快速信息分发模板。模板包含了快速信息分发的收件人、分发内容等信息。

打开快速信息分发配置对话框
在这个对话框中:
| 配置名称 |
在这里为快速信息分发输入一个易于理解的名称以便于后续的管理和使用。 |
| Excel模板文件 |
在这里上传信息分发的模板文件。模板文件中应该包含收件人信息(例如员工的邮件地址、钉钉或企业微信帐号),要分发的信息(例如员工的绩效考核得分)等信息。模板文件的第一个Sheet中包含模板信息。模板的第一行是标题行,标题不能为空且不能重复。下图是模板文件的示例:
|
| 分发信息类型 |
在这里选择要分发的消息的推送方式。分发信息类型可以是“电子邮件(文本格式)”、“电子邮件(HTML格式)”、"企业微信、钉钉文字消息"、"企业微信、钉钉Markdown消息" |
| 消息通道 |
在这里选择用于推送信息的消息通道。 |
| 收件人数据列 |
在模板Excel文件中选择一个列作为收件人信息列。 执行命令时上传的Excel数据表中的此列将被作为收件人的邮件地址或企业微信、钉钉帐号对待。 |
| 抄送人数据列 |
如果分发信息类型是电子邮件,则可以选择一个Excel数据列作为抄送人(可选)。推送的信息将被抄送给指定的邮件地址。 |
| 消息标题 |
如果分发信息类型是电子邮件,则可以在这里为邮件指定一个标题。邮件标题中可以使用变量、Excel表格字段等内容。 |
| 消息正文模板 |
在这里输入消息正文的模板内容。 提示:果需要在模板中插入Excel数据字段或变量等内容,请在正文模板上点击鼠标右键,然后进行插入操作。 |
| 高级选项 |
|
| 可执行此信息分发命令的用户 |
选择可执行此信息分发命令的用户。被选中的用户将可以在EasySQLMAIL控制台界面上上传Excel数据文件并执行此快速信息分发命令。 提示:系统管理员(admin用户)始终可以执行此命令。 |
| 允许将信息推送给地址薄中不存在的邮件地址 |
默认情况下,如果上传的Excel数据文件中的邮件地址在地址薄中不存在时,系统将不会发送对应的邮件。如果需要允许用户向地址薄中不存在的邮件地址发送信息,请勾选此选项。 |
| 分发数据导入后,由管理员负责启动分发过程 |
默认情况下,其他用户在EasySQLMAIL控制台中上传Excel数据文件并确认推送内容后,推送过程会立即启动,开始对信息进行分发。 选择此选项后,其他用户只能在EasySQLMAIL控制台中上传Excel数据文件并发起推送请求。推送请求经过系统管理员审核后,由系统管理员启动推送过程。 |
| 执行命令时显示的说明文字 |
在这里输入执行命令时要显示的文字说明,例如对模板的要求、推送内容的要求等。用户在执行分发命令时,将在界面上看到这些文字。 |
(1) 上传要分发的Excel数据文件:系统管理员以及有权限执行指定信息分发命令的用户可以在EasySQLMAIL控制台界面上点击菜单条中的“快速信息分发”菜单项打开快速信息分发界面,然后点击要执行的命令右侧的“执行命令”按钮打开执行界面。在执行命令对话框中上传准备好的Excel数据文件,然后点击“开始执行命令”按钮。上传的Excel数据文件的第一个Sheet中包含要分发的信息数据,表格的格式、列名必须与命令配置时使用的Excel模板的格式完全一致。

上传Excel数据文件
(2) 启动信息分发:Excel数据文件上传完成后,系统会读取上传Excel并生成分发信息。分发信息生成完成后,执行命令的用户或系统管理员需要检查生成的信息是否符合要求。确认无误后,点击“开始推送生成的信息”按钮启动信息分发过程。此时系统开始逐条发送生成的信息。

查看生成的分发信息并启动信息分发
提示:如果命令配置中使用了“分发数据导入后,由管理员负责启动分发过程”选项,在用户上传了Excel数据文件并核对分发信息无误后,需要请系统管理员在EasySQLMAIL控制台中启动分发过程。

由系统管理员启动在命令日志查询界面中启动分发过程
(3) 分发过程启动后,系统开始逐条发送生成的信息。用户可以在快速信息分发界面的“日志查询”中查询到分发进度和分发结果。
EasySQLMAIL提供了Excel数据导入功能。管理员配置好Excel数据导入命令后,其他用户可以在EasySQLMAIL控制台界面中上传Excel数据表格,然后由EasySQLMAIL根据管理员的配置将Excel表格中的数据导入到指定的数据库。
系统管理员在EasySQLMAIL控制台界面中点击“Excel数据导入”菜单项,然后点击“新建数据导入命令”按钮打开“Excel数据导入命令配置”。

“Excel数据导入命令配置”对话框
在这个对话框中:
| 配置名称 |
在这里为数据导入命令输入一个易于理解的名称以便于后续管理和应用。 |
| Excel模板文件 |
在这里上传数据导入的模板文件。模板文件的第一个Sheet中包含模板信息。模板的第一行是标题行,标题不能为空且不能重复。下图是模板文件的示例:
|
| 目标数据库 |
在这里选择要将Excel表格的数据导入到哪个数据库。 |
| 导入到目标表 |
在这里输入导入数据的目标表。用户上传Excel数据表后,EasySQLMAIL会将Excel表格中的数据导入到这个数据库表中。 |
| 字段对应关系 |
在这里设置将Excel数据表中的字段导入到数据库表的哪些字段中。设置后,Excel表格中的字段将被导入到数据库表的指定字段中。 目前系统支持在导入Excel表格数据时使用以下变量填充目标表字段:
|
| 高级选项 |
|
| 启用批量插入功能(可加快导入速度) |
在将数据导入目标表时是否启用批量插入功能。启用后将加快数据导入速度。 |
| 批量插入行数 |
如果启用了“批量插入”功能,则可以设置每读取多少行原始数据插入一次目标表。默认为每100行数据插入一次。 |
| 数据导入完成后执行指定的任务 |
设置在每次数据导入完成后可以执行一些任务。您可以在任务中用SQL命令对导入的数据进行二次检查和校验,也可以进行信息推送。 |
| 允许执行数据导入的用户查看由数据复制命令启动的任务的运行日志 |
是否允许执行数据导入的用户查看由数据复制命令启动的任务的运行日志。如果不选择此选项,则执行命令的用户(admin除外)将不能查看由数据导入命令触发的信息分发任务的运行日志。 |
| 允许执行数据导入的用户查看由数据复制命令启动的任务生成的邮件 |
是否允许执行数据导入的用户查看由数据复制命令启动的任务生成的邮件或消息。如果不选择此选项,则执行命令的用户(admin除外)将不能查看由数据导入命令触发的信息分发任务生成的邮件或消息的内容。 |
| 可执行此Excel数据导入命令的用户 |
选择可执行此信息分发命令的用户。被选中的用户将可以在EasySQLMAIL控制台界面上上传Excel数据文件并执行此数据导入命令。系统管理员(admin)用户不需要选择就可以执行此命令。 |
| 执行命令时显示的说明文字 |
在这里输入执行命令时要显示的文字说明,例如对模板的要求、导入的内容的要求等。用户在执数据导入命令时,将在界面上看到这些文字。 |
系统管理员(admin)或有对应数据导入命令执行权限的用户可以在EasySQLMAIL控制台界面中执行数据导入命令。

执行Excel数据导入命令
用户上传要导入的Excel表格并点击“开始导入”按钮后,EasySQLMAIL会先将Excel表格的数据读取到中间表,然后从中间表将数据逐行插入到目标数据库的目标表中。

Excel数据导入命令执行信息
(1) 用户执行命令时上传的Excel数据文件中的数据必须放在第一个Sheet中,表格的第一行是标题行,从第二行开始是数据行。标题行中的内容必须与管理员在配置数据导入命令时上传的模板中的标题行的内容完全一致(包括列名和列的顺序)。
(2) 数据文件中不能有透视表或其它复杂内容,也不允许"筛选"。允许有SUM、COUNT等简单公式的计算结果。
(3) 如果数据列中有日期时间,请按Excel的标准日期时间格式书写,例如日期不能写成"202106"这种格式,否则在导入时会出现“数字格式错误”的提示导致导入失败。
(4) 为保证数据正确性,管理员在配置数据导入命令时应该在用户执行完数据导入命令后触发一个任务,在任务中使用SQL语句对用户导入的数据的正确性进行校验。(例如检查用户导入的Excel数据中的产品类型是否正确,数量是否超出范围等等)。

设置数据导入后要执行的任务
(5) 管理员在配置完数据导入命令后,应对命令进行仔细测试,确认命令正确后再进行使用。
(6) Excel数据导入目前只支持Excel2008以上版本的Excel表格格式(文件扩展名为.xlsx),不支持.xls格式及文本文件(csv或其它格式)。
注意:在实际使用中配置数据导入命令时,应该先将上传的数据存入一个中间表,数据导入完成后执行一个任务对中间表中的数据格式和数据合法性进行校验,确认数据正确后再存入正式表。
任务是一系列EasySQLMAIL配置的集合。用户通过在EasySQLMAIL中配置任务来告诉EasySQLMAIL系统如何提取信息和进行信息推送。一个EasySQLMAIL任务中包含以下主要内容:
| 任务名称 |
设置任务的名称,以便于后续的管理。 |
| 邮件标题 |
如果任务要推送电子邮件,可以为任务设置一个邮件标题。 |
| 收件人 |
设置将任务生成的信息推送给哪些人员。可以为任务同时设置电子邮件和企业微信、钉钉收件人。系统会根据收件人的类型自动选择相应的推送方式。 |
| 正文模板 |
设置要推送的正文的模板。正文中可以包含文字、表格、统计图表等内容。 |
| 附件模板 |
设置要推送的附件的模板。EasySQLMAIL支持将SQL查询结果转换为Excel、PDF、CSV等格式进行推送。 |
| SQL命令 |
用于在任务开始前或任务结束后执行一些用于数据处理的SQL语句。例如,可以用SQL命令在任务开始前判断是否有数据需要发送,并根据情况决定是否要继续执行任务。 |
| 执行计划 |
设置任务的执行时间和执行间隔。 |
“任务类型”指任务的内容类型。可以是“电子邮件”、“文字消息”、“markdown消息”等。每种消息有各自不同的正文模板格式。
1.0.1215版本新增任务类型“交互式查询”。管理员可以通过交互式查询实现简单的数据查询界面,用户可以在界面输入查询条件,系统处理后把查询结果显示给用户。
提示:任务类型与推送方式无关。系统在进行推送时,会根据收件人的类型自动选择相应的推送方式。例如,“电子邮件”类型的任务也可以通过钉钉、企业微信推送给收件人,而“文字消息”和“markdown消息”也可以通过电子邮件推送给收件人。

系统支持的任务类型
EasySQLMAIL支持在任务中执行SQL语句查询数据或对数据进行更改。任务中的以下位置会使用到SQL语句:
| SQL命令 |
用于在任务开始前或任务结束后执行一些SQL语句为任务准备数据或是进行数据清理。SQL命令中的语句不能用于直接提取要推送的数据。 参见 SQL命令的配置和使用 |
| 附件模板 |
用于查询要推送的数据。附件模板被停用或删除后,模板中的SQL语句将不会再被执行。 |
| 变量 |
用户可以使用SQL语句在任务运行时动态确定变量的值。 注意:任务执行时需要计算变量的值时才会执行变量的SQL语句,如果任务中没有使用此变量,则变量的SQL语句不会被执行。 参见 变量 |
| 循环执行任务 |
用户可以设置一段SQL语句从数据库中查询用于循环执行任务的数据。参见 配置点对点信息分发任务 |
EasySQLMAIL支持在SQL语句中使用变量进行动态查询,例如下面这样:

在SQL语句中使用变量
执行任务时,系统会用变量“统计日期”的值替换语句中的“#统计日期#”,最后实际执行的SQL语句将变成:
SELECT *
FROM t_stat
WHERE stat_date = '2021-09-11'
ORDER BY area, month;
为保证数据库安全,系统在执行SQL语句前会对变量的值进行安全检查。具体规则如下:
| 变量在SQL语句中出现的位置 |
检查规则 |
解决办法 |
| 变量在成对的单引号中出现 |
变量值中的单引号必须成对连续出现 |
在生成变量值时将变量值中的单引号替换为两个连续的单引号 或使用JDBC变量类型 |
| 变量在成对的双引号中出现 |
变量值中的双引号必须成对连续出现 |
在生成变量值时将变量值中的双引号替换为两个连续的单引号 或使用JDBC变量类型 |
| 变量在语句中的单引号或双引号外出现 |
(1) 变量值可以是一个数字; (2) 变量值中包含非数字字符时,不能出现除下划线以外的其它符号。 |
使用JDBC变量类型 |
参见 变量
注意:
(1) EasySQLMAIL中的变量的数据类型是VARCHAR。在使用时需要根据要操作的表的字段类型对变量值进行相应转换。例如,在Oracle数据库中查询一个日期字段的表时,需要对变量使用to_date方法进行转换:
/*
t_stat.stat_date字段是一个日期字段,变量@@date的值是字符串2021-11-10,
所以查询时需要使用to_date对@@date变量的值进行转换
*/
SELECT *
FROM t_stat
WHERE stat_date = to_date('#@@date#', 'yyyy-mm-dd');
EasySQLMAIL支持在SQL语句中使用JDBC类型的变量。在语句中使用JDBC类型变量有以下优点:
(1) 获得更快的执行速度。使用普通变量时,系统在执行命令时会把SQL语句中的变量文字替换为变量值,每次执行的SQL语句的文本内容可能会不同。使用JDBC变量时,系统把语句中的变量文字替换为“?”(问号,JDBC变量占位符),变量值由数据库的JDBC驱动进行处理,可以获得更快的处理速度,同时还可以合理利用数据库的SQL语句缓存,降低数据库的资源消耗。
(2) 能够更有效地保证SQL语句的安全性。例如:使用普通变量时,如果变量值的文字中包含了单引号或双引号,系统在进行参数检查时会出现错误,导致任务执行失败。使用JDBC变量可以避免出现此问题。
在SQL语句中的双引号和单引号之外的变量名两端加“[“和“]”,系统会将这个变量作为JDBC变量来处理。例如:
SELECT *
FROM t_stat
WHERE area = #[area]#
系统在运行这个SQL语句时,会将变量文字“#[area]#”替换为“?”,并把变量“area”的值以JDBC变量的形式传递给数据库。
替换后的SQL语句如下:
SELECT *
FROM t_stat
WHERE area = ?
注意:
(1) JDBC变量的变量文字(上例中的#[area]#)不能位于双引号和单引号中,例如下面的语句运行时将会出现“找不到变量[area]”的错误:
SELECT *
FROM t_stat
WHERE area = ‘#[area]#’
(2) JDBC变量仅能出现在语句的查询条件中或是为字符赋值的语句中。例如
SELECT *
FROM table
WHERE column1 = #[变量1]# AND column2 = #[变量2]#
或
UPDATE table
SET column1 = #[变量1]#
WHERE column1 = #[变量2]#
JDBC变量不能出现在要查询的表名、字段名或其它对象名称中,例如下面的写法将会运行出错:
SELECT * FROM t_stat_#[月份]#
上述语句中表名部份的“月份”变量应该使用普通变量来实现,例如:
SELECT * FROM t_stat_#月份#
(3) EasySQLMAIL中的JDBC变量的数据类型统一为VARCHAR类型。在实际使用时,可能需要根据操作的表的数据类型在SQL语句中对JDBC参数的数据类型进行转换,例如:
--PostgreSQL数据库的表t_stat中,month是int类型的字段,传入的jdbc参数”月份”的数据类型是varchar,如果直接查询将会报错“数据类型不一致”,因此需要将”月份”参数转换为int类型的数据
SELECT *
FROM t_stat
WHERE month = #[月份]#::int4
(4) 由于JDBC驱动程序的限制,在SQL查询中出现in关键字时,不能使用JDBC参数。例如下面的查询语句的执行结果可能不正确:
SELECT *
FROM t_stat
WHERE area_name IN (#[地区]#)
当“地区”的内容是单个值(例如“成都”)时,查询结果正确;但如果地区的内容是多个值(例如‘西安’,‘成都’)时,由于JDBC驱动会把整个字符串作为一个单一的值传递给数据库,因此查询结果为空。您可以使用普通参数写法来进行IN查询,例如:
SELECT *
FROM t_stat
WHERE area_name IN (#地区#) --使用普通的替换型参数写法
您也可以把参数的值列表分解后存入一个临时表中,然后把SQL查询的条件修改为
SELECT *
FROM t_stat
WHERE area_name IN (SELECT area_name FROM 临时表) --使用临时表方法修改查询
在实际使用中推荐使用第二种方案处理IN的参数问题。
|
|
普通SQL变量 |
JDBC变量 |
| 传值方式 |
SQL文本替换为变量值 例如 select * from t_stat where area = ‘#area#’ 替换为 select * from t_stat where area = ‘成都’ |
SQL文本替换为“?”,JDBC驱动传值。例如 select * from t_stat where area = #[area]# 替换为 select * from t_stat where area = ? 并将area变量的值通过setString(1,value)传递给JDBC驱动 |
| 一个变量一次包含参数个数 |
可以包含多个值。例如变量area=1,2,3 语句select * from t_stat where area in (#area#) 执行时被替换为 select * from t_stat where area in (1,2,3) |
一次只能包含一个值。 语句select * from t_stat where area in (#[area]#) 执行时被替换为 select * from t_stat where area in (?) ,且area必须是一个单一的数字,例如“5”。 执行的SQL语句等同于 select * from t_stat where area in (5) |
| 作为对象名的一部份 |
普通参数可以作为对象名的一部份。例如month=202110时, 语句select * from t_stat_#month# 被替换为 select * from t_stat_202110 |
不可作为对象名的一部份。 语句select * from t_stat_#[month]#执行时将会报错。 |
| NULL值的处理 |
普通参数类型中,如果@@sqldata(字段名)获得的上级语句的字段值是NULL,系统在处理时会将参数值转换为空字符进行处理。 例如,上级语句调用SQL命令时传入的“用户ID” 字段的值是NULL,下面的语句: INSERT INTO USER (user_id) 将被替换为 INSERT INTO USER (user_id) |
JDBC参数中,如果@@sqldata(字段名) 获得的上级语句的字段值是NULL,系统会将对应的SQL语句参数的值设置为NULL。 例如,上级语句调用SQL命令时传入的“用户ID” 字段的值是NULL,下面的语句: INSERT INTO USER (user_id) 将被替换为 INSERT INTO USER (user_id) 调用时,JDBC参数1的值是NULL。 |
| 执行效率 |
较低,在并发数量大时效率问题尤为明显。 |
高。可利用数据库的SQL缓存。 |
| 安全性 |
较低。系统在执行前会对变量安全性进行检查,变量值中出现非法符号时会中止任务运行。 |
高。安全性由数据库驱动程序处理。 |
系统默认使用成对出现的”#”号作为变量定界符,例如”#统计日期#”。某些数据库中#号有特殊含义(例如SQL Server中,#号表示临时表),这时也可以设置使用${变量名}作为变量定界符。

设置SQL语句的变量定界符
上述设置后,在SQL语句中需要引用变量时,写法如下:

修改变量定界符后的SQL语句写法
EasySQLMAIL连接数据库时,启用了“事务支持”。在任务中执行了INSERT、UPDATE、DELETE等数据修改语句后,需要使用commit语句显式提交事务后所做的更改才能生效。例如:
INSERT INTO t_stat
(area_name,
month,
cnt,
amount)
VALUES ('成都',
202110,
180,
1992.3);
--插入数据后需要显式提交事务
COMMIT;
如果没有使用commit语句提交事务,任务结束时会回滚所有的更改。
管理员也可以在数据源配置中启用“自动提交被更改的数据(不使用事务)”选项自动提交更新。选用此选项后在此数据源上执行的数据修改语句将立即生效,不需要再执行commit语句。

启用“自动提交被更改的数据(不使用事务)”选项
参见 数据源选项
任务模板是任务配置的核心元素,包括正文模板和附件模板两类模板。管理员通过配置任务模板来决定信息的推送格式。
指信息推送的正文的模板内容。正文模板根据任务类型不同可以分为“电子邮件”、“文字信息”、“markdown消息”三类。
| 电子邮件 |
正文模板中可以包含文字、表格、图表等内容。 任务生成的内容可以通过电子邮件、企业微信、钉钉等方式推送给收件人。 通过企业微信、钉钉推送时,正文内容可以转换为文字消息或PDF、图片推送,邮件附件作为文件推送。 |
| 文字信息 |
中仅能容纳文字信息。 任务生成的内容可以通过电子邮件、企业微信、钉钉等方式推送给收件人。 通过企业微信、钉钉推送时,正文内容作为文字消息推送,邮件附件作为文件推送。 |
| markdown消息 |
根据不同平台可以容纳不同的内容,例如通过钉钉推送markdown消息时,可以在消息中加入图片内容。 任务生成的内容可以通过电子邮件、企业微信、钉钉等方式推送给收件人。 通过电子邮件推送时,正文内容作为HTML内容推送,附件作为文件推送。 |
“附件模板”是指在推送时作为消息的附件(例如电子邮件中的附件文件)的模板。EasySQLMAIL支持将SQL查询结果转换为Excel表格或csv文件进行推送,也支持按您设计好的Excel模板来进行填写和推送。
提示:如果要在“电子邮件”任务的正文模板中显示统计图表,必须先在Excel中设计好图表样式和数据区域,并将设计好的Excel文件作为附件模板上传到EasySQLMAIL系统中,然后才能在正文中插入要显示的Excel图表。参见在邮件正文中显示统计图表
用于在任务开始前或任务结束后执行一些用于数据处理的SQL语句。例如,可以用SQL命令在任务开始前执行一些语句生成统计数据,并判断是否有数据需要发送,并根据情况决定是否要继续执行任务。
从1.0.1215版本开始,系统还提供了“数据导入命令”。管理员可以在任务开始前从Excel表格导入数据到指定数据库的表中,然后在任务中对这些数据进行处理。

在任务中创建SQL命令
注意:SQL命令不能直接用于查询要推送的数据。查询推送数据的SQL语句应该在正文模板或附件模板中进行设置。

在任务中创建“数据导入命令”
数据导入命令的配置方法请参见 创建Excel数据导入命令。
注意:如果任务中配置了“数据导入命令”,必须在手动执行任务时上传要导入的Excel表格。如果任务同时配置了执行计划,在自动执行任务时会因为缺少要导入的Excel表格文件而导致任务失败。

手动执行任务时上传要导入的Excel表格
为了增加任务处理的灵活性,在EasySQLMAIL中可以使用变量实现在任务运行时改变正文内容和SQL语句的查询条件。
EasySQLMAIL中有以下两种类型的变量:
| 用户变量 |
由用户自定义的变量类型。变量名可以是中文,但不能包含除下划线以外的其它符号。变量值可以是一个固定值,也可以使用SQL语句在任务运行时动态确定变量的值。 |
| 系统变量 |
系统预定义的变量类型。变量名以“@@”字符开头。 |
用户变量由用户自行创建。变量名称由用户自定义,变量值可以是固定的值,也可以用一个SQL语句在运行时动态决定变量的值。

创建用户变量对话框

变量选项
在这个对话框中:
| 在邮件正文中将变量值作为HTML代码对待 |
默认情况下在将变量值插入邮件正文时,EasySQLMAIL会对变量值中的HTML代码关键字进行转换(例如”<”会被转换为”<”),以保证变量值能正确显示。启用此选项后,系统不转换变量值中的HTML代码关键字,直接将变量值插入邮件正文。此功能主要用于文字需要特殊显示的场景。例如,如果查询的销售数量小于10,就用红字显示,可以启用此选项,然后在SQL语句中进行判断和输出: SELECT CASE |
| 允许从外部接口表中传入变量值 |
设置从数据源的外部接口表中调用此命令时是否允许同时传入此变量的值。如果从外部接口表中调用此任务时传入了此变量的值,则任务此次执行时将以传入的值作为变量的值,变量的配置值将无效。参见外部接口功能 |
| 允许空值(空字符串或NULL) |
是否允许变量出现空值。在SQL语句中使用变量时,空值可能会导致SQL语句错误。因此使用此选项的需要仔细对使用了此变量的SQL语句进行测试。 |
| 对变量值进行SQL安全检查 |
在SQL语句中使用此变量时,是否对变量值进行安全检查,以防止出现SQL注入攻击。安全检查的规则如下: · 变量在SQL语句中的字符串内出现时,变量值中的变量定界符(例如单引号、双引号)必须成对连续出现。 · 变量在SQL语句中的字符串外出现时,变量值中只能出现数字、字母和下划线,不允许出现其它字符。 |
| 任务管理员手动运行此任务时是否允许修改运行值 |
· 允许为变量输入一个不同于配置值的运行值:允许在手动运行时为变量指定一个值 · 不允许输入运行值,使用变量的配置值来执行任务:不允许在手动运行时修改变量的运行值。 提示:此选项仅对任务管理员有效。系统管理员和任务所有者总是能够在手动运行任务时输入变量的运行值。 参见 |
为便于任务配置,系统中预定义了一些常用的系统变量。系统变量的变量名以“@@”开始。以下是EasySQLMAIL支持的系统变量列表:
| @@datetime |
取任务执行时的日期时间,精确到分钟,格式为yyyy-MM-dd hh:mm |
例如 2021-10-29 09:11 |
| @@shortdatetime |
取任务执行时的日期时间,精确到分钟,格式为yyyyMMddhhmm |
例如 202110290911 |
| @@date |
取任务执行时的日期,格式为yyyy-MM-dd |
例如2021-10-29 |
| @@shortdate |
取任务执行时的日期,格式为yyyyMMdd |
例如 20211029 |
| @@lastday |
取任务执时的前一天的日期,格式为yyyy-MM-dd |
例如 2021-10-28 |
| @@shortlastday |
取任务执时的前一天的日期,格式为yyyyMMdd |
例如 20211028 |
| @@systemname |
取系统管理员为EasySQLMAIL指定的系统名称 |
|
| @@laststarttime |
取当前任务的上一次运行时间,精确到秒,格式为yyyy-MM-dd hh:mm:ss。如果任务没有运行过,则返回一个空字符串 |
例如 2021-10-29 09:11:06 |
| @@taskId |
当前正在执行任务的任务ID |
仅在执行任务时可用 |
| @@taskInstId |
当前任务实例的任务实例ID |
仅在执行任务时可用 |
| @@parentTaskInstId |
任务实例的上级任务实例ID(如果任务不是子任务,则返回0)。参见配置点对点信息分发任务 |
仅在循环任务的子任务中可用 |
| @@taskInstSource |
任务实例的启动来源。1:任务实例由管理员手动启动;2:任务实例由执行计划启动;3:任务实例由外部接口启动;4:任务实例由数据提取请求启动; |
|
系统变量和任务变量在整个任务的范围内可见,模板变量仅在对应附件模板或正文模板的范围内可见。
配置任务时,可以在正文模板、SQL语句、邮件标题、附件文件名等处使用变量来生成动态的内容。

在正文中使用配置好的变量
任务执行时,系统会将变量“统计日期”的值显示在正文中“#统计日期#”的位置上。

任务执行后生成的正文内容
注意:在markdown正文模板中使用变量时,需要使用“${”和“}”作为变量定界符,例如:${变量名}。
您可以在邮件标题中使用变量来动态生成邮件标题。例如:

在邮件标题中使用变量
任务执行时,系统将用变量“统计日期”的值替换邮件标题中的“#统计日期#”。最后生成的邮件标题如下:

任务执行后生成的邮件标题
您可以在任务的附件模板文件名中使用变量来动态生成附件文件名。例如:

在附件文件名中使用变量
任务执行时,系统将用变量“统计日期”的值替换附件文件名中的“#统计日期#”。最后生成的附件文件名如下:

任务执行后生成的附件文件名
注意:在附件文件名中使用变量时,变量的值需要符合操作系统的文件命名要求(变量中不能出现<、>、|、:、/、\、*、?等符号)。系统会将这些符号替换为“_”(下划线)以保证附件文件能被正常推送。
EasySQLMAIL支持在SQL语句中使用变量实现动态查询。详细方法参见 在SQL语句中使用变量进行动态查询
从1.0.1215版本开始,系统提供了“交互式查询”任务功能。管理员可以通过配置交互式查询任务来实现简单的信息查询界面。用户可以在界面上输入查询条件,系统处理后把查询结果显示给用户。本节介绍“交互式查询任务”的“查询参数”配置。
查询参数是指可以上员工在查询界面上输入的参数。管理员可以在任务中使用员工输入的查询参数作为SQL的查询条件,并把查询结果展示在查询界面上供员工浏览。

员工在查询界面上输入查询参数

在SQL语句中使用查询参数
管理员可以在任务配置界面的“查询参数”TAB页中管理任务的查询参数。

在任务中增加查询参数
在这个对话框中:
| 参数名称 |
在这里输入查询参数的参数名称。这个名称可以在SQL语句中用作查询参数的名称。参数名称中只允许出现字母、数字或下划线,且必须以字母或下划线开头。参数名称可以是中文字符。 |
| 参数标签 |
在这里输入查询参数的标签(可选)。参数标签将被显示在前端的查询界面的输入框前,为员工输入查询参数提供帮助。如果没有设置参数标签,系统将使用"参数名称"作为查询参数的标签。 |
| 输入格式 |
在这里选择查询参数的输入格式。不同的输入格式在前端界面上有不同的展现方式。 |
| 参数说明 |
在这里输入查询参数的说明(可选)。这些说明文字将被显示在查询前端查询界面的参数说明中,供员工输入查询参数时参考。
|
| 是否必填 |
选择查询参数是否必须填写。如果为“是”,则查询时必须输入此参数,否则可以不用输入。如果员工没有输入此查询参数,系统传递给SQL的参数值是一个空字符串。 |
EasySQLMAIL支持以下格式的查询参数。
(1) 单行文字
在界面上显示为一个单行文本框。员工可以输入单行文本作为查询条件。

单行文字输入框
(2) 多行文字
在界面上显示为一个多行文本框。员工可以输入多行文本(可以包含回车换行符号)作为查询条件。

多行文本框
(3) 数字
在界面上显示为一个单行文本框。员工可以输入数字(包含小数,数字前可以带一个+或-号,不支持科学计数法或指数格式)作为查询条件。

数字文本框
(4) 日期时间
在界面上显示为一个日期时间文本框。员工可以输入“yyyy-MM-dd hh:mm:ss”格式的日期时间内容,例如“2022-08-05 07:12:00”。

日期时间文本框
注意:系统传递日期时间文本框的内容给SQL语句时,传入的是一个字符串值。管理员配置任务时可能需要在SQL语句中把字符串值转换为日期时间值,例如在Oracle中可以这样转换:
SELECT *
FROM plan_list
WHERE
/*
系统传入的“开工日期”是一个字符串(varchar)值
需要使用to_date函数转换为日期时间才能与表中的日期时间字段"start_date"进行比较
*/
start_date = To_date( # [开工日期] # , 'yyyy-mm-dd hh24:mi:ss') ;
在SQL Server中可以这样转换:
SELECT *
FROM plan_list
WHERE
/*
系统传入的“开工日期”是一个字符串(varchar)值
需要使用convert函数转换为日期时间才能与表中的日期时间字段"start_date"进行比较
*/
start_date = CONVERT(DATETIME, #[开工日期]# , 111);
(5) 日期
在界面上显示为一个日期文本框。员工可以输入“yyyy-MM-dd”格式的日期内容,例如“2022-08-05”。

日期文本框
注意:系统传递日期文本框的内容给SQL语句时,传入的是一个字符串值。管理员配置任务时可能需要在SQL语句中把字符串值转换为日期值。参见 日期时间查询参数转换
(6) 时间
在界面上显示为一个时间文本框。员工可以输入“hh:mm:ss”格式的日期内容,例如“16:12:15”。

时间文本框
(7) 选项列表
在界面上显示为一个选项列表框,员工可以在列表框中选择要查询的参数。

选项列表框
选项列表的内容可以是固定列表(由管理员在配置任务时手动输入),也可以是一个动态列表(在执行任务时用SQL语句从数据库中动态查询)。
为固定列表添加选项:

为选项列表添加固定选项
为动态选项列表设置查询列表选项的SQL语句:

设置动态选项列表的SQL语句

设置选项值和选项文字字段
注意:
(1) 系统上传选项列表中的查询参数时,将“选项值”传递给任务进行处理。例如下面的这个选项列表:

示例选项列表
系统执行这个查询时,传递给后台的“地区”参数是列表中“地区编码”这一列的内容,即“1001”。
(2) 当选项是多项选择项时,系统传递给后台的参数值是一个逗号分隔的数组,例如’1001’,’1002’。如果需要在SQL语句中使用IN关键字处理此参数,需要注意不能在IN关键字中使用JDBC类型参数处理此参数值,否则查询结果可能不正确。参见 在SQL语句中使用变量进行动态查询
点击EasySQLMAIL控制台菜单中的“任务配置管理”菜单项打开任务管理界面。

任务管理界面
任务管理界面中列出了当前用户可以管理的任务列表。在这个界面中:
| 创建简单任务 |
使用EasySQLMAIL任务向导创建一个简单的信息推送任务。任务向导创建的任务只支持最基本的信息查询和推送功能,没有变量和SQL命令等高级功能,并且只能通过电子邮件进行推送。用户也可以使用任务向导创建推送任务后对任务进行修改以支持高级功能。 |
| 创建高级任务 |
打开任务配置界面创建一个包含变量、执行计划等高级内容的信息推送任务。 |
| 导入任务 |
导入一个从其它EasySQLMAIL系统导出的信息推送任务。用于在多个系统间共享任务配置。 |
| 移动到文件夹 |
将任务移动到指定的任务文件夹中以便于管理。 |
| 选项 |
设置要在任务管理界面上显示的数据列以及自动刷新任务列表的间隔时间 |
提示:
(1) 系统管理员之外的其他用户需要有“创建新任务”权限才能够创建新的信息推送任务。
(2) 用户可以在任务列表的某个任务项上点击鼠标右键,在弹出的任务管理菜单中选项相应菜单项进行操作。

任务管理右键菜单
在这个菜单中:
| 查询任务修改日志 |
系统管理员或任务所有者可以在这里查询任务的修改记录。(1.0.1215新增) |
| 查询任务草稿箱 |
系统管理员或任务所有者可以在这里查询任务的草稿箱,查看任务的修改轨迹。(1.0.1215新增) |
| 查看任务在用的配置(只读) |
系统管理员或任务所有者可以在这里查询任务的当前使用的配置内容。(1.0.1215新增) |
| 修改任务配置 |
对所选任务的配置信息进行修改。系统管理员可以编辑所有任务的配置信息,其他用户只能修改自己创建的任务的配置信息。 |
| 预览任务 |
对配置好的任务进行预览。任务预览供管理员或用户预览任务生成的邮件和消息,不会将信息推送给收件人。 |
| 启用 |
启用一个已停用的任务。 |
| 停用 |
停用一个已启用的任务。任务停用后,将不会再定时自动执行,并且也不能从外部接口上调用此任务。 |
| 运行任务 |
手动运行选定的任务。 |
| 查看任务日志 |
查询选定任务的运行日志和任务运行后生成的邮件等内容 |
| 数据提取日志 |
查询选定任务的数据提取日志 |
| 删除任务 |
删除选定的任务。普通用户只能删除自己创建的任务,管理员可以删除所有用户创建的任务。 |
| 恢复被删除的任务 |
恢复一个被删除的任务。普通用户只能恢复被自己删除的任务,管理员可以恢复被其他用户删除的任务。 |
| 发送提取码 |
将任务的提取码发送给指定的员工。参见数据提取码 |
| 导出任务配置信息 |
将任务的SQL语句、模板导出为一个任务配置文件,并在另一个EasySQLMAIL系统中导入。通过导出和导入任务配置,可以很容易地在多个EasySQLMAIL系统间共享任务配置。参见在多个系统间共享任务配置 |
| 改变任务所有者 |
改变将任务的所有者。改变所有者后,新的所有者将能够获得任务的管理权限,可以对任务进行修改、运行、删除等操作。参见任务所有者和任务管理员 |
| 设置任务管理员 |
为任务设置一个或多个任务管理员用户。参见任务所有者和任务管理员 任务管理员可以对任务进行以下操作: · 手动运行被管理的任务 · 查询由自己手动运行的任务实例记录
对任务的以下操作只能由任务所有者和系统管理员进行,任务管理员无权操作: · 修改和测试任务配置 · 预览、启用、停用和删除任务配置 |
点击任务管理界面中的“创建高级任务”按钮打开“新建任务”对话框。

打开“新建任务”对话框
EasySQLMAIL支持四种任务类型。每种任务类型支持的正文模板格式不同。
| 电子邮件 |
正文是HTML内容,可以容纳文本、统计图表、表格等内容。 |
| 文字消息 |
正文是文字内容,仅可显示文字。 |
| markdown消息 |
正文是markdown格式的内容。可以包含格式文本、网页链接等内容。具体的markdown语法请参考企业微信或钉钉的markdown语法说明: 企业微信markdown语法说明:https://work.weixin.qq.com/api/doc/90000/90135/90236#%E6%94%AF%E6%8C%81%E7%9A%84markdown%E8%AF%AD%E6%B3%95 钉钉markdown语法说明: https://developers.dingtalk.com/document/app/message-types-and-data-format/title-afc-2nh-5kk
|
| 交互式查询 |
1.0.1215版本新增。管理员可以通过配置交互式查询任务来实现简单的信息查询界面。用户在界面上输入查询条件,系统管理处理完后把查询结果显示给用户。 |
提示:
(1) 信息的推送方式与收件人的账号类型有关,与任务类型无关。例如,电子邮件消息也可以通过企业微信或钉钉推送给员工(正文内容会被转换为纯文字格式),文字消息和markdown消息也可以通过电子邮件推送给员工。系统会根据收件人账号的类型自动选择相应的推送方式。参见 任务类型说明
(2) 每种任务类型都可以添加附件模板,将查询结果以Excel、PDF格式推送给员工。
邮件标题除作为电子邮件的主题外,在通过钉钉推送markdown消息时,邮件标题将被markdown消息的标题显示在钉钉客户端界面的消息预览界面上。
邮件标题中可以添加动态内容。例如,如果需要在邮件标题中添加当天的日期,可以在按如下方式进行操作:
1、 在“邮件标题”文本框中需要添加日期的位置点击右键,并在菜单中选择“插入变量到当前位置”菜单项:

插入变量到邮件标题模板中
2、 在“选择变量”对话框中选择“系统变量/函数”Tab页,并选择” @@date”变量,然后点击“确定”按钮。系统将在邮件标题的选定位置插入#@@date#变量。

选择@@date变量

插入变量后的邮件标题模板
3、 任务运行时,系统会将标题中的#@@date#替换为当前的日期:

邮件主题中带变量的任务运行结果
有关变量的更多信息,请参见:变量
进行任务配置时,可以为任务选择多个收件人。每种任务都可以选择电子邮件收件人、钉钉收件人和企业微信收件人。系统会根据收件人账号的类型自动选择相应的推送方式。

设置任务收件人
EasySQLMAIL支持在任务运行时动态确定任务的收件人。具体方法如下:
1、 在任务中添加任务变量,用于计算收件人的电子邮件地址:

为任务添加收件人变量
2、 在设置任务收件人时,点击“从变量添加”,然后选择第一步中创建的变量:

选择变量作为收件人
3、 任务运行时,会先执行SQL语句计算变量”收件人”的值,然后将变量的值作为信息的收件人地址来处理。
4、 通过钉钉、企业微信推送时也可以用此方法动态确定收件人账号。在添加钉钉、企业微信收件人时点击“从变量添加”按钮,然后选择对应的变量即可。
注意:此时SQL语句计算变量“收件人”的值的结果应该是收件用户的钉钉或企业微信帐号,而不是用户的邮件地址。

从变量添加收件人
有关变量的更多信息,请参见:变量
“电子邮件”类型的任务中,邮件正文是一个HTML格式的文档,其中可以包含文字、表格、图表等内容。

邮件正文模板编辑器
您可以在邮件正文模板编辑器中输入邮件正文的模板内容。邮件正文是一个HTML文档,可以包含文字、图片、表格、网页链接等内容,但不能包含IFRAME、FRAME、SCRIPT元素。
如果需要在正文中插入SQL字段或是表格,请在需要插入字段或表格的地方点击鼠标右键,并在右键菜单中选择相应的菜单项进行操作。

邮件正文编辑器的右键菜单
在这个菜单中:
| 插入在Excel中设计好的表格 |
上传一个已设计好的自定义Excel表格。系统会将Excel中的第一个Sheet的内容转换为HTML表格插入到邮件正文中的指定位置。 |
| 插入在Excel附件模板中设计好的图表 |
将已在附件模板中设置好的Excel模板中的图表插入到当前位置。运行时系统会将Excel生成的图表插入到HTML正文中的当前位置。 |
| 设置单元格属性 |
设置当前位置上的表格单元格的宽度、颜色等样式。 |
| 插入SQL查询结果字段到当前位置 |
将一个SQL查询的结果字段的内容显示到当前的位置上 |
| 插入SQL查询结果表格到当前位置 |
将一个SQL查询结果的内容以表格的形式显示在当前位置上 |
| 修改对应的SQL语句和显示样式 |
修改一个SQL表格对应的SQL语句的内容和表格的显示样式 |
| 停用/启用表格 |
停用或启用一个正文中的SQL表格。表格被停用后,任务执行时将不执行此表格对应的SQL语句,并且表格也不会显示在正文中。 |
在正文模板编辑器上需要插入SQL查询结果表格的地方点击鼠标右键,选择“插入SQL查询结果表格到当前位置”菜单项,系统将打开“插入SQL查询结果表格”向导。在向导中按提示进行操作即可。

插入SQL查询结果表格到当前位置
“ 插入SQL查询结果表格”向导运行完毕后,系统会在表格对应的位置上显示一个表格占位符。点击这个表格占位符可以修改表格的SQL语句和显示格式。

系统显示的表格占位符
任务运行时,系统会将SQL语句的查询结果转换为HTML表格显示到正文模板中的表格占位符上:

系统将SQL查询结果表格显示到正文中的指定位置
在正文模板编辑器上需要插入SQL查询结果表格的地方点击鼠标右键,选择“插入SQL查询结果表格到当前位置”菜单项,系统将打开” 插入SQL查询结果字段到当前位置”向导。在向导中按提示进行操作即可。

插入SQL查询结果字段到当前位置
“插入SQL查询结果字段到当前位置”向导运行完毕后,系统会在表格对应的位置上显示一个字段占位符。点击这个字段占位符可以修改表格的SQL语句内容。

正文模板上显示的字段占位符
任务运行时,系统会将SQL语句的查询字段的内容显示到正文模板中的字段占位符位置上:

任务运行后字段占位符上显示了SQL查询结果的对应字段
EasySQLMAIL支持将Excel附件模板中的统计图表显示到邮件正文中。本例中将以显示一个柱状统计图为例来说明在邮件正文中显示图表的方法。

本例中要显示的图表样式
提示:此功能需要在EasySQLMAIL所在的服务器上安装Excel2010以上版本的电子表格软件。
(1)在Excel模板表格中创建数据列和图表。在需要由SQL语句填写数据的位置写入数据单元格标记。例如下图中的“<%日期%>”和“<%销售收入%>”。

设计一个带图表的自定义Excel文件模板
(2)在数据单元格上创建两个命名区域,分别名命为“日期”和“销售收入”。EasySQLMAIL在填写SQL查询结果到这两个单元格时,会同时对命名区域的范围进行扩展,以保证数据区域的正确范围。
创建“命名区域”指向数据单元格
提示:在Excel界面上按下Ctrl+F3键弹出“名称管理器”,并在名称管理器中设置命令区域的名称和范围即可。本例中的命名区域的范围分别指向“<%日期%>”和”<%销售收入%>”两个单元格。
(3) 将图表的分类轴标签设定为“=模板文件名.xlsx!日期”,图例项“销售收入”的数据源指定为“=模板文件名.xlsx!销售收入”。

在图表上点击右键,选择“选择数据”菜单项

将图表的标签轴区设置为” =模板文件名.xlsx!日期”

将图表的数据系列值设置为” =模板文件名.xlsx!销售收入”
Excel模板文件设计好后,在任务中创建一个附件模板,将设计好的带图表的自定义Excel文件模板上传到系统中,并为附件模板设置查询语句。
(1)为任务添加附件并上传设计好的Excel模板文件。

点击任务配置窗口右侧的“添加附件”按钮

上传Excel模板文件并创建新查询
(2) 在SQL语句向导中输入查询数据的SQL语句,并设置语句返回的字段与Excel表格中的数据字段的对应关系。

设置查询数据的SQL语句

设置SQL语句字段与Excel表格中的数据字段的对应关系
对应关系设置好后,系统在运行任务时会将SQL语句返回的字段的数据填写到Excel模板表格中的对应的数据单元格的位置上,并对数据单元格所在的区域进行扩展以保持公式、图表区域的正确性。
上述设置完成后,点击附件配置窗口的“确定”按钮回到正文配置窗口。
(1) 在邮件正文配置窗口中要显示图表的位置上点击右键,并在弹出的菜单中选择“插入在Excel附件模板中设计好的图表”菜单项。

选择“插入在Excel附件模板中设计好的图表”菜单项
(2) 在 “选择图表”对话框中选择要插入到当前位置的图表:

选择要插入的图表
点击“确定”后,系统会在正文模板中的对应位置上显示一个图表占位符。点击这个图表占位符可以对附件模板的SQL语句等配置进行修改。

系统显示的图表占位符
上述配置完成后,预览或运行任务即可看到执行效果:

带图表的邮件正文的运行结果
提示:如果只想显示图表,不推送图表所在的Excel附件文件,可以选择附件模板中的“不发送此模板生成的数据文件”选项。

“不发送此模板生成的数据文件”选项
如果需要在正文中显示不规则的表格(例如表格中包含合计行、表头等内容)时,可以使用EasySQLMAIL的“自定义表格”功能来进行实现。
本节向您介绍在EasySQLMAIL的邮件正文中显示自定义表格的实现方法。
首先在Excel中设计一个表格模板。在模板文件的第一个Sheet中设计好表格的内容和样式,并在要填写SQL查询结果的地方设置“数据单元格”标志。在后续的配置中,EasySQLMAIL通过识别“数据单元格”来确定哪些位置需要填写数据。
数据单元格的写法为:<%数据单元格名称%>。前后的”<%”和”%>”是数据单元格的定界符,中间是数据单元格名称。数据单元格名称不区分大小写,且不能重复。为了便于后续的配置,建议将数据单元格名称与SQL语句查询结果中的字段名称保持一致。

在Excel中设计自定义表格模板
上面示例中的<%统计日期%>、<%分公司%>等单元格内容就是数据单元格。在后续的配置中可以让EasySQLMAIL将SQL查询结果的字段内容显示到这些数据单元格上。
注意:模板表格导入到邮件正文后,表格中的公式、透视表、图表等内容将不被支持。如果需要在表格中使用公式、透视表或图表,请将表格作为”自定义Excel模板”附件进行发送。参见自定义Excel模板
在邮件正文编辑器中将光标移动到要插入自定义表格的位置,然后点击工具条上的“
”按钮,打开上传Excel模板表对话框并选择要上传的模板表格文件。

上传Excel模板表格
点击“确定”后,系统将上传选择的Excel模板表格文件,并将表格文件里第一个Sheet中的内容转换为HTML格式的表格插入到正文编辑器的光标位置上。

自定义格式表格被插入到正文模板中
表格插入到正文模板后,点击工具条上的“编辑查询语句和模板选项”按钮,打开“正文模板属性”对话框,并点击对话框中的“创建新查询”按钮打开“创建新的SQL查询” 向导:

打开”创建新的SQL查询” 向导
在向导中选择数据源并输入查询数据的SQL语句。

选择查询数据源并输入查询语句
提示:为了便于后续的配置,建议使用SQL语言的”AS”关键字将SQL语句中的字段名称设置为与模板表格中的数据单元格名称一致。
输入SQL语句后,点击“下一步”按钮,系统将运行输入的SQL语句并取得查询结果中的字段信息。在下一步中,您需要设置SQL字段与模板表格中的数据单元格的对应关系。

设置SQL字段与数据单元格的对应关系
提示:如果模板表格中的数据单元格名称与SQL字段的名称一致,可以“全选”所有SQL字段,然后点击“自动匹配数据单元格”按钮,系统将按字段名称自动将SQL字段显示到模板表格中同名的数据单元格上。

自动匹配SQL字段与数据单元格关系
上述配置完成后,保存任务设置,然后预览任务,执行结果如下:

正文中自定义表格的执行效果
上面的表格中显示了统计表的查询结果。但是“统计日期”、” 销售量合计”、” 销售金额合计”这三个单元格还没有数据。因此需要为这三个单元格再配置对应的查询语句:

“统计日期”单元格的查询语句

“销售量合计”和“销售金额合计”的查询语句
SQL语句配置好后,将查询结果字段与数据单元格进行关联。再运行任务后,执行结果如下:

语句配置完后成的运行结果
配置完成后,在表格中显示了“统计日期”、“合计”等完整的内容。
(1) 邮件正文中导入Excel模板表时,Excel中的公式、透视表、图表内容不受支持。如果要发送带公式、透视表、图表的Excel表格,请使用“自定义Excel模板”进行推送。参见自定义Excel模板
(2) 邮件正文的容量有限,因此表格查询结果行数不能太多,一般不能超过300行数据。内容过多时会导致任务执行失败。
(3) 在设置数据单元格和SQL查询时,尽量将数据单元格的名称与SQL字段的名称保持一致,以便于后续设置SQL字段与数据单元格的对应关系。
将电子邮件类型的信息推送给企业微信或钉钉收件人时,电子邮件的正文将被转换为文字消息进行推送(其中的图表、表格的格式等信息会丢失)。管理员可以通过配置将正文内容转换为PDF格式推送给收件人,这样就能够保留正文的图表和表格等内容:

电子邮件正文通过钉钉、企业微信推送时的格式选项
附件模板是指EasySQLMAIL在生成邮件时要发送的附件文件的模板。在附件模板中,您可以配置查询数据的SQL语句、转换数据的方式和附件的格式,EasySQLMAIL将按照附件模板配置中的内容进行数据提取和转换,并将转换后的数据文件添加到邮件的附件中或作为单独的文件通过钉钉、企业微信等通道推送给收件人。
EasySQLMAIL支持动态附件模板和普通文件附件。
| 动态附件模板 |
附件内容在运行时根据SQL查询结果动态填写。格式可以是HTML、Excel表格等,附件文件可以转换为PDF格式。 |
| 普通文件附件 |
可以是Word文档、图片或其它格式的附件文件,文件内容固定不变。(1.0.1215新增) |
用户可以在EasySQLMAIL的任务配置界面中对任务的附件模板进行管理。

附件模板管理界面
在这个界面中,用户可以创建、停用或删除任务的附件模板。附件模板被停用或删除后,任务执行时将不再处理此模板的内容,模板中的SQL语句也不会再被执行。
“普通文件附件”是1.0.1215版本新增的附件类型。管理员可以创建这种类型的附件来推送一些内容固的文件,例如Word文档、图片、PDF文件等。

创建普通文件附件
在这个对话框中:
| 附件文件名 |
可以点击上传文件,或下载附件模板文件 |
| 对PDF文件进行加密 |
如果附件文件是一个PDF文件,可以在这里设置为PDF文件加密或加水印。注意如果PDF文件已经被加密,则使用此选项会导致任务失败。 |
| 发送消息给微信或钉钉收件人时不包含此文件 |
勾选此选项后,系统在推送任务结果时,不把文件推送给钉钉或企业微信收件人。 |
| 发送消息给邮件收件人时不包含此文件 |
勾选此选项后,系统在推送任务结果时,不把文件推送给邮件收件人。 |
| 模板已停用 |
勾选此选项后,模板将被停用。任务执行时不处理此附件模板。 |
在任务配置界面中点击“添加附件”按钮即可打开附件模板配置界面。

点击“添加附件”按钮打开“附件模板配置对话框”

附件模板配置对话框
在这个对话框中:
| 模板名称 |
为附件模板输入一个名称以便于后续的管理。此名称也可能被当用附件的文件名使用。 |
| 模板已停用 |
如果选择此项,则附件模板会被停用,在任务执行时将不处理此模板的内容,模板中的SQL语句也不会被执行。 |
|
|
目前已不支持该选项。 |
| 附件类型 |
设置附件文件的类型,EasySQLMAIL运行时将根据附件类型进行数据转换和推送不同格式的文件。 |
| 查询结果转换方式 |
对于“直接将查询结果转换为简单的Excel表格或文本文件”类型的附件模板,可以设置将查询结果转换为Excel格式或是文本文件格式。 |
| 文本文件格式设置 |
设置在将查询结果转换为文本文件时的转换格式、文字编码、换行符号风格等选项。 |
| 将表格内容显示到邮件正文中 |
对于“HTML格式报表”类型的附件模板,可以选择此选项将HTML附件文件的内容插入到邮件正文的指定位置上。 |
| 将表格内容显示到正文中 |
对于“自定义Excel模板”类型的附件模板,可以选择此选项将Excel附件的内容(包括表格中的图形、图表)转换为HTML格式显示到邮件正文的指定位置上。(1.0.1214及以上版本) 提示:为获得理想的转换效果,此功能需要在安装EasySQLMAIL的机器上同时安装Microsoft Excel2016或以上版本Excel软件。 |
| 将附件文件命名为 |
用于重命名发送的附件文件名。可以在名称中加入变量实现动态的附件命名。例如,需要在附件文件名中显示当前日期时,可以使用#@@date#变量:
任务执行时生成的附件文件名将变为:
有关变量的更多信息,请参见:变量 |
| 创建新查询 |
在附件模板中创建一个新的SQL查询语句并设置SQL语句中的字段的转换方式。 提示:一个附件模板中可以添加多条SQL查询语句,每个查询语句的结果可以显示到不同的位置上。 |
| 模板变量 |
可以在这里设置当前模版范围内可见的变量。参见 用户变量 |
EasySQLMAIL中支持以下类型附件模板:
| 直接将查询结果转换为简单的Excel表格或文本文件 |
直接将SQL查询结果转换为一个简单的行列式Excel表格或文本文件。转换后的表格的第一行是标题行,从第二行开始是数据行,类似于下面这样的格式:
|
| HTML格式报表 |
将查询结果转换为HTML格式的文档。在使用中可以进一步将HTML附件转换为PDF文件进行推送。 |
| 自定义Excel模板 |
用户在Excel中设计自定义的表格格式,然后在附件模板中配置SQL查询字段的显示位置。“自定义Excel模板”类型的附件模板支持公式、透视表、图表等内容。 注意:需要在安装EasySQLMAIL的机器上安装Office Excel后才能使用透视表和图表功能。 |
用户可以在配置中为附件模板添加一条或多条查询语句,用于查询需要推送的数据。在使用“直接将查询结果转换为简单的Excel表格或文本文件“类型的附件模板时,可以将每个SQL语句的查询结果放入同一个附件文件的不同Sheet中,在使用“HTML格式报表”或“自定义Excel模板”格式的附件模板时,可以将每个SQL语句的查询结果放入表格中的不同单元格中。

为附件模板添加一个SQL查询语句
点击“创建新查询”按钮后,系统将打开“创建新的SQL查询”向导。用户可以在向导中输入要运行的SQL语句、选择要推送的数据列,并设置数据列的显示样式。下面以“直接将查询结果转换为简单的Excel表格或文本文件”类型的附件为例进行说明:

第一步:选择数据源并输入查询语句

第二步:选择要推送的数据列
提示:在这一步中,如果要推送的列是动态的(例如销售统计表中可能会为每月生成一个新的列“202111销售额”,“202112销售额”,依此类推),这时可以勾选“运行时显示所有查询结果字段到表格中”选项。勾选此选项后,系统在执行任务时会将此SQL查询的所有数据列全部添加到结果表格中。

第三步:设置表格的显示样式

第四步:为表格指定一个名称,此名将作为表格在Excel附件中的Sheet名称
SQL查询创建后,如果需要修改查询语句或是表格样式、字段与数据单元格对应关系,可以在附件模板的“SQL语句列表”中点击要修改的SQL语句,打开SQL语句的“查询属性”对话框。

在附件模板的“SQL查询”列表中点击要修改的SQL查询

SQL查询属性对话框
在这个对话框中
| 工作表名称 |
设置SQL语句的查询结果要显示到哪个Sheet中。在“直接将查询结果转换为简单的Excel表格或文本文件”类型的附件模板中,工作表名称将被作为SQL查询执行后生成的表格的Sheet名称。可以在“工作表名称”中使用变量来动态生成Sheet名称。例如当变量“月份”的值为“202111”时,“统计表#月份#” 执行后生成的Sheet名称将是“统计表202111”。 在任务或附件中添加变量“月份”,变量值为“202111”:
设置工作表名称,在其中使用变量“月份”:
执行结果:
|
| 命名区域 |
当附件模板是“自定义Excel模板”类型时,可以为SQL查询选择一个要操作的命名区域。如果SQL查询返回了多行记录时,此区域中的所有单元格将作为一个整体反复被复制,为每行查询生成一个新的单元格块。 |
| 扩展 |
设置在“自定义Excel模板”中,当SQL查询返回了多行记录时,如何扩展Excel表格中的数据单元格。 · 向下扩展:向数据单元格的下方扩展新的单元格并把查询结果依次填入新的单元格中。 · 不扩展:不生成新的单元格。只在Excel表格中显示SQL查询结果中的第一行记录,其它行的数据将不被显示。 |
| 自动匹配数据单元格 |
在“HTML格式报表”和“自定义Excel模板”附件模板中,可以使用这个按钮快速地匹配SQL字段与模板中的数据单元格的对应关系。
|
参见
| 如果SQL语句的查询结果为空,则终止任务 |
如果查询语句返回的结果集为空,则中止整个任务。通常用于在没有查询到数据时中止任务,以防止推送无用的邮件或信息。 |
| 特殊数据行样式配置 |
在简单表格中为每行指定不同的显示样式。例如可以前表格的前三行显示为红色字体以便于识别。详细使用方式参见特殊数据行样式配置。 |
| markdown正文模板中显示块 |
在markdown消息中显示查询结果时,把查询结果前面的行和后面行作为一个整体重复显示。 |
这种模板类型能够快速地将SQL语句查询结果转换为简单行列式的Excel表格或文本文件。简单行列式表格的第一行是标题行,第二行及以下的行是数据行。
(1) 在任务中添加一个附件模板,“附件类型”为“直接将查询结果转换为简单的Excel表格或文本文件”:

添加“直接将查询结果转换为简单的Excel表格或文本文件”附件模板
(2) 点击对话框中的“创建新查询”按钮,添加一个新的SQL查询语句。SQL语句运行后,将要显示到Excel中的字段添加到右侧列表中:

添加要显示的字段
提示:如果SQL查询的列数是动态的(例如按月增加数据列的统计表),可以选择“运行时显示所有查询结果字段到表格中”选项。任务运行时系统的会将SQL查询的所有字段都显示到附件文件中。
(3) 在表格设计器中对表格的样式、列标题等进行设置:

设置表格样式
提示:双击列标题单元格,可以设置列标题的文字内容,数据列的样式等内容。
(4) 为表格指定一个名称。此名称将被作为Excel表格中的Sheet名称。

设置表格的Sheet名称
一个附件模板中可以添加多个SQL语句,每个SQL语句的查询结果会被转换到附件文件的不同Sheet中。

为附件模板添加多个SQL查询并指定工作表名称
任务运行后生成的表格如下:

任务执行后生成的表格
在” 运行时显示所有查询结果字段到表格中”类型的附件模板中可以对同一列中相邻且内容相同的单元格合并显示。例如,有如下内容:

有相同内容的表格
如果需要对此表格中A列的相邻且内容相同单元格的单元格合并显示,可以双击A列的标题单元格,然后选择“合并同一列中相邻且数据相同的单元格”选项:

选择“合并同一列中相邻且数据相同的单元格”选项
选择此选项后的执行结果如下:

A列中的相同单元格被合并显示
EasySQLMAIL中提供了表格的行列转置功能。在配置"直接将查询结果转换为简单的Excel表格或文本文件"类型的附件模板和"插入SQL查询结果表格到当前位置"中时,您可以通过简单的设置来实现行列转置的功能。例如象下面这样:

行列转置的表格
如需要启用表格上的行列转置功能,请按以下方法进行设置:
(1) 在SQL语句向导进行到“设计表格”时,点击表格设计器上方的“行列转置”按钮,打开“行列转置”向导。

设计表格时点击“行列转置”按钮打开“行列转置”设置向导
(2) 在向导中按提示选择好“关键列”、“标题列”和“数据列”。如果不清楚“关键列”、“标题列”和“数据列”的含义,可以在向导中查看相关内容的演示图片:

查看向导中的演示图片
提示:启用SQL语句上的行列转置功能后,表格设计器中不能直接看到行列转置的效果。预览任务后才能看到行列转置实际效果。
(3) 行列转置表格的执行结果如下:

行列转置表格的执行结果
EasySQLMAIL支持在” 直接将查询结果转换为简单的Excel表格或文本文件”类型的附件模板或是邮件正文中” 插入SQL查询结果表格到当前位置”的SQL语句中为每一行数据显示不同的颜色。
(1) SQL语句配置好后,在附件模板配置对话框中点击要修改样式的SQL语句,打开“查询属性”对话框,并点击打开“其它选项”Tab页,点击页面中的” 特殊数据行样式配置”按钮:

打开“特殊数据行样式”配置对话框
(2) 点击对话框中的“添加特殊样式”按钮,打开"添加特殊数据行样式"对话框:

"添加特殊数据行样式"对话框
在这个对话框中:
| 此样式应用到 |
设置当前的样式应用到哪些数据行上。 · 交替出现:当前样式在表格中交替出现。例如第一行按当前样式显示,第二行按另外的样式显示,第三行又按挡前样式显示。 · SQL查询到的数据行中的指定范围:例如,对SQL查询结果的第一行到第三行按当前的样式进行显示。 · SQL查询到的数据行中的指定范围(倒数):例如,对SQL查询结果的倒数前三行按当前样式进行显示。 |
(3) 案例1:按不同样色显示查询结果的数据行:

交替显示不同样式的配置

交替显示不同样式的执行结果
(4) 案例2:前三名显示为绿色,后三名显示为红色:

配置方案

执行结果
HTML格式附件模板是一个HTML文档,其中可以容纳表格、文字等内容。在推送时,系统将HTML格式附件作为一个HTML文档推送,也可以转换为PDF格式推送。HTML格式附件模板的配置方法与HTML正文的配置方法类似,但HTML格式附件模板中不支持简单行列式表格和图表内容。参见在邮件正文中显示自定义表格
HTML格式附件模板中内容也可以插入到邮件正文中进行显示。
当”简单行列式表格”不能满足您的要求时,您可以自己设计一个自定义Excel模板,然后设计好取数的SQL语句,并配置好语句的查询结果与表格中的数据单元格的对应关系,EasySQLMAIL将按您的要求,将数据填入您所设计的模板表格的对应位置。
在自定义Excel模板中,可以使用Excel公式、透视表、图表等内容。
例如下面的这个表格:

带表头和合计行的表格
这个表格中带了一个表头部份,还使用了SUM对销售量和销售金额进行求和。下面以这个表格为例介绍自定义Excel附件模板的配置方法。
(1) 在Excel中设计表格模板。在设计模板时需要注意:
a. 在需要填写SQL查询结果的单元格上设置数据单元格标志。数据单元格标志的写法为
<%数据单元格名称%>
”<%”和”%>”是数据单元格的定界符,中间是数据单元格名称。数据单元格名称不区分大小写,在同一个Sheet中,数据单元格名称必须唯一,不能重复。

自定义模板表格中的数据单元格
b. 如果要在表格中使用公式(例如SUM,且SQL语句会查询出多行记录,则需要在数据单元格上创建一个“名称”,然后将公式的内容修改为”SUM(创建的名称)”:

为C4单元格创建一个名称”销售量”

修改公式的计算范围为名称”销售量”
系统的在执行任务时,会对“销售量”这个名称包含的区域进行整体扩展,SUM函数的计算范围也会相应扩展以保持计算结果的正确。
(2) 创建附件模板,并上传Excel表格模板

创建附件模板并上传表格模板文件
(3) 设置SQL查询语句,并配置SQL字段与数据单元格的对应关系:点击附件模板配置对话框中的“创建新查询”按钮,打开“创建SQL查询”向导。在向导中选择数据源,输入查询语句后,系统会运行输入的查询语句并取得查询返回的字段信息。

选择数据源并输入查询语句
提示:为便于后续的配置,建议在SQL语句使用”AS”关键字把字段名称设置为与模板表格中的对应数据单元格的名称一致。
(4) 在向导中设置好查询结果字段和表格模板中的数据单元格的对应关系。

设置查询结果字段与数据单元格对应关系
如果查询结果的字段名与数据单元格的名称一致,可以使用“自动匹配数据单元格”功能按名称快速地建立字段与数据单元格的关联:

按字段名称快速建立SQL字段与数据单元格的关联
(4) 可以为模板添加多个SQL语句,每个语句的查询结果填写到不同的位置上。在本例中,我们再创建一个语句用于查询当前的日期并显示到模板表格中的“<%统计日期%>”数据单元中:

查询”统计日期”的SQL语句

将查询结果字段关联到“统计日期”数据单元格上
(5) 上述设置完成后,预览任务即可看到执行效果:

任务执行后生成的表格内容
提示:在自定义模板中使用图表内容时,也需要为数据单元格创建“名称”,并将图表的数据源区域设置为对应的“名称”。具体操作方法请参见“在邮件正文中显示统计图表”。
注意:
1) 自定义Excel模板中不支持使用变量。“#变量名#”这样的内容将被保留原样不被处理。
2) 如果自定义表格中包含了透视表,需要在安装EasySQLMAIL的服务器上安装Excel软件才能正常刷新透视表内容。
循环执行附件模板时,可以按同样的查询语句,用不同的查询条件查询数据,并将每次查询的数据放入不同的附件文件中。例如,使用相同的查询语句查询不同分公司的销售统计数据,并为每个分公司生成一个表格:
SELECT area AS 分公司,
month AS 销售月份,
cnt AS 销售量,
amount AS 销售金额
FROM t_stat
WHERE area = '分公司名称'; --每次查询时传入不同的分公司名称

将每次查询的结果放到不同的Sheet中
本例中的循环执行附件模板的配置方式如下:
(1) 在附件模板中创建一个名为“分公司”的变量:

创建模板变量“分公司”
(2) 在附件模板的“模板选项”中启用“按指定条件循环执行附件模板”选项,并点击“循环条件设置”按钮打开” 循环条件设置”对话框:

启用“按指定条件循环执行附件模板”选项
(3) 在“模板循环条件设置”对话框中设置读取循环数据的SQL语句,任务执行时,将以此SQL语句返回的数据为变量的值,为每一行数据执行一次附件模板的数据查询语句并生成一个附件文件。
输入SQL语句后,点击“测试SQL语句”按钮,系统的会执行输入的SQL语句并取得SQL字段信息。然后由用户在“字段与变量映射关系”列表中设置SQL字段与模板变量的对应关系。

模板循环条件设置
提示:也可以使用Excel表格或CSV文件作为循环条件的数据源,例如下面这样的表格:

循环条件表格
(4) 修改附件模板的SQL语句,在SQL语句中使用“分公司”变量实现查询不同分公司的数据,同时将查询语句属性中的“工作表名称”也设置为“#分公司#”,运行时使用分公司名称作为工作表名称:

修改附件模板的SQL语句的配置
(5) 为了将循环查询生成的表格显示到一个Excel文件中,还要启用“将执行后生成的Excel附件文件合并到一个Excel文件中“选项,任务执行时会将每次查询生成的Sheet合并到一个Excel表格文件中:

启用“ 将执行后生成的Excel附件文件合并到一个Excel文件中”选项
提示:
· 启用“将执行后生成的Excel附件文件合并到一个Excel文件中”选项需要安装Excel软件。
· 如果不启用此选项,每次循环时查询的数据将被放到一个单独的Excel文件中,任务执行后会生成多个附件文件。
(6) 执行任务后,运行结果如下:

循环执行的模板执行后生成的附件文件内容

循环模板执行时生成的日志
注意:与循环执行任务不同,在循环执行模板时不支持使用@@loopdata获取模板的循环数据。
| 不发送此模板生成的数据文件 |
选择此选项后,此附件模板生成的数据文件将不被发送。此选项主要用于生成正文图表时,不发送图表所在的数据文件。 |
| 仅允许在查询服务器上查询此附件的数据 |
此选项仅能用于“直接将查询结果转换为简单的Excel表格或文本文件”类型的模板。选择此选项后,数据文件的内容将只能在EasySQLMAIL查询平台上查询。 |
| 如果查询语句没有生成任何数据,则不发送此附件 |
如果附件模板的所有SQL语句都没有查询到数据,则不发送此附件模版,以免发出无内容的空Excel文件。 |
| 将文档转换为PDF格式发送(仅对HTML文件和Excel文件有效) |
将文档内容转换为PDF格式的文件进行发送。在转换时可以对文档进行加密、加水印(仅支持电子邮件)等操作。参见将附件文件转换为加密的PDF文件格式 |
| 发送消息给微信或钉钉收件人时不包含此文件 |
选择此选项后,在将任务数据通过企业微信或钉钉进行推送时,将不推送此模板生成的文件。 |
| 发送消息给邮件收件人时不包含此文件 |
选择此选项后,在将任务数据通过电子邮件进行推送时,将不推送此模板的文件。 |
| 按指定条件循环执行附件模板 |
使用指定的条件循环执行同一个附件模板,任务将生成多个结果文件。例如,可以用同样的查询语句为每个分公司单独生成一个Excel表格。参见循环执行附件模板 |
| 将执行后生成的Excel附件文件合并到一个Excel文件中 |
将附件模板生成的多个Excel文件合并到一个Excel文件中。此功能需要安装Excel软件。 |
| 附件生成后自动刷新附件文件中的公式 |
在自定义Excel表格模板生成附件文件后,自动刷新表格中的公式。此功能需要安装Excel软件。 |
| 将附件文件压缩后发送 |
如果附件文件被转换为文本文件,则可以使用此选项对生成的文件进行压缩,支持加密压缩。参见压缩附件文件为ZIP格式 |
| 仅在"电子邮件"类型的任务中处理此附件模板 |
选择此选项后,如果任务的类型是“电子邮件”,则处理此模板,否则不处理此模板的内容。 |
EasySQLMAIL支持将附件文件转换为PDF格式进行推送,并能够对PDF文件进行加密和加水印等操作。如需转换附件文件为PDF格式,在”模板选项”中启用“将文档转换为PDF格式发送“选项,并设置转换选项即可。

启用“将文档转换为PDF格式发送”选项
在这个对话框中:
| 页面大小 |
设置转换后的PDF文件的页面大小。默认转换为A4纸张大小。 |
| 纸张方向 |
设置PDF的纸张方向。默认转换为“纵向” |
| 显示比例 |
设置表格内容在PDF文件中的显示比例(仅对Excel附件有效) |
| PDF文档管理密码 |
收件人需要使用此密码才能对PDF文件进行编辑和修改 |
| 收件人需要输入密码才能打开此PDF文件 |
启用此选项后,收件人需要输入“PDF文档浏览密码”才能查看PDF文件的内容 |
| 水印模式 |
设置在PDF中添加水印的方式。 |
| 水印文字大小 |
设置水印文字大小。(1.0.1215新增) |
| 允许收件人打印此PDF文件 |
选择此选项后,收件可以打印PDF文件的内容 |
| 允许复制文件内容 |
选择此选项后,收件人可以从PDF阅读器中复制文件内容到剪贴板 |
提示:在转换Excel文件为PDF格式时,需要在服务器上安装Excel软件。
EasySQLMAIL支持将附件文件压缩为ZIP格式进行推送,并且可以对压缩后的ZIP文件进的加密。如需对文件加行压缩,在附件模板的“模板选项”中选择“将附件文件压缩后发送”选项,并设置压缩文件的密码即可。

使用“将附件文件压缩后发送”选项
注意:
(1) 如果已选择了“将文档转换为PDF格式发送”选项,则不能再进行压缩。
(2) 邮件正文不能进行压缩。
(3) ZIP文件的“密码生成方式”的生成方式可以是“固定密码”和“取变量值作为密码”。“取变量值作为密码”主要用于生成动态密码。密码中不能包含单引号、双引号、中文字符和不可见字符(例如空格符、制表符)。
EasySQLMAIL允许在任务开始前或任务结束后执行一些SQL语句。例如,可以在任务开始前执行一些SQL语句,生成统计表数据;也可以在任务执行成功后执行一个 SQL语句,更新用户自己创建的任务记录表中的一行记录;还可以在任务开始前先查询某一个表的数据,当数据满足某些条件时,才继续执行任务。
注意:任务的SQL命令不能用于查询要推送的数据。查询推送数据的SQL语句应该放在附件模板的SQL语句中执行。
管理员可以在任务配置界面的“SQL命令”Tab页中创建和管理任务的SQL命令。

SQL命令管理

SQL命令配置对话框
在这个对话框中:
| 命令名称 |
为命令设置一个名称以便于管理。执行场景为“供其它命令调用”的命令的名称不能为空,其它类型的命令可以不用设置命令名称。 |
| 设置命令的执行场景。执行场景可以是: · 只在主任务中执行:只在非循环任务或是循环任务的主任务中执行此命令。 · 只在循环任务的子任务中执行:只在循环任务的子任务中执行此命令。 关于循环任务的更多信息请参见“配置点对点信息分发任务”章节。 · 在所有场景中执行:在非循环任务、循环任务的主任务和子任务中均执行此命令。 · 供其它命令调用:此命令仅供其它SQL命令使用@@RUNCMD方法调用,不会主动执行。参见“@@RUNCMD方法的使用” |
|
| 执行时机 |
· 任务开始前执行:在任务开始前执行此命令的内容。通常用于为任务准备数据,进行任务先决条件判断等。 · 任务成功结束后执行:在任务的推送信息(例如邮件、消息)生成成功后执行此命令。 注意:命令将在任务执行成功后就执行,而不是信息推送(例如邮件发送)成功后执行。 · 任务失败后执行:在任务执行失败后执行此命令。 · 任务结束后执行(无论成功或失败):无论任务是成功结束还是失败结束,均执行此命令。 |
| 作为任务执行的先决条件 |
设置以此命令的查询结果作为任务的先决条件。如果命令执行后返回了空结果集(没有查询到数据)或是不符合指定条件时中止任务。通常用于在任务开始时判断有无需要推送的数据,以防止推送无用的空消息。 关于先决条件的详细信息请参见”在条件成立时才执行任务”。 |
| 语句执行出错时的处理策略 |
· 忽略错误并跳过此SQL命令,继续运行任务的其他SQL命令:当此命令中的SQL语句执行出错时,忽略错误继续运行任务 · 终止任务:停止运行任务,任务将以失败结束。 提示:当SQL命令作为先决条件运行时此选项无效,出错时总是会中止任务。 |
| 先决条件的判断方式 |
· 查询返回的记录集不为空:当SQL命运令运行后返回的结果集不为空时,先决条件成立。 · 查询返回的记录集不为空,且第一行第一列的值与判断值和条件相符时,先决条件成立:例如语句返回的数据集不为空,且第一行第一列的值>0时,先决条件成立。 |
| 先决条件不成立时的提示语 |
可以在这里为任务设置一条提示语,当此命令的判断条件不成立时,在任务日志中显示一条日志,例如显示一条日志“没有可以推送的数据”。 |
| SQL语句 |
一个SQL命令中可以包含多条SQL语句,每个SQL语句之间用“;”(分号)分隔。 SQL语句中可以插入任务变量,也可以通过@@RUNCMD方法调用其它命令。 |
为了便于在任务中循环执行某些SQL语句实现多行数据的处理,EasySQLMAIL 中提供了@@RUNCMD方法,通过使用@@RUNCMD方法可以在任务的一个SQL命令中循环调用其它SQL命令。
例如,可以在一个SQL命令”命令A”中使用如下语法为查询到的每行数据调用一次”命令B”:
select process_instance_id from t_u #@@runcmd([命令B])#;
语句中的最后一个命令“@@runcmd([命令B])”表示为语句中的每一行查询结果调用一次“命令B“。调用时系统会将“命令A”的语句的查询结果逐行传递给被调用的命令,被调用的命令中可以用”@@sqldata(字段名)”方法获得传入的字段的值。
注意:
(1) 被调用的命令的执行场景必须是“供其它命令调用”,且必须为命令设置一个“命令名称”。“命令名称”不区分大小写,在同一个任务中必须唯一。命令名称中不允许出现除下划线以外的其它符号,且不能以下划线开始。

被调用的命令配置
(2) @@RUNCMD出现的位置:如果@@RUNCMD出现在SELECT语句中的分号(即语句结束符)前,则系统为SELECT语句的每一行查询结果执行一次@@RUNCMD方法;如果@@RUNCMD单独出现,则只运行一次被调用的命令且不会传递查询结果给被调用命令。
例如,下面的语句中的@@RUNCMD方法只会运行一次:
/*@@runcmd命令在select语句的分号后之后单独出现,只运行一次” 命令B”,且不会传递查询结果给被调命令*/
select * from t_u;
#@@runcmd([命令B])#
下面的语句中的@@RUNCMD方法会循环执行:
/*@@runcmd命令在select之中,系统会为每条查询结果循环调用” 命令B”*/
select * from t_u #@@runcmd([命令B])# ;
(3) 在SQL Server数据库的IF语句中使用@@RUNCMD时需要注意,@@RUNCMD需要与SELECT语句连用才能实现IF的条件为真时执行@@RUNCMD方法。例如,“当a=b时执行@@RUNCMD”的需求应该这样写:
IF a = b select 1 #@@runcmd([命令B])#;/*正确。条件成立时会运行一次@@RUNCMD命令*/
以下是错误的写法:
IF a = b #@@runcmd([读取审批实例详情])#;/*错误。任务运行时会因SQL语法错误而中止*/
(4) 一个SQL命令中可以出现多次@@RUNCMD调用,但每一条SQL语句中只允许出现一次@@RUNCMD调用。例如,可以为一个SQL命令中的多条语句分别调用不同的命令:
--以下是同一个SQL命令中的多条语句。可以在每条语句中出现一次@@runcmd调用
select * from t1 #@@runcmd([命令1])#;--语句1
select * from t2 #@@runcmd([命令2])#;--语句2
if t1 = 1 select 1 #@@runcmd([命令3])#;--语句3
下面的语句写法错误:
select * from t_u #@@runcmd([命令1])# #@@runcmd([命令2]);/*错误,一个语句中出现了多次@@RUNCMD调用*/
如果要在一个语句中调用多条命令,可以在@@RUNCMD中添加多个命令名,每个命令名之间用“,”(逗号)分隔,例如:
select * from t_u #@@runcmd([命令1,命令2,命令3])#;
(5) @@RUNCMD总是在所在的SQL语句执行后才开始运行。
例如,下面的写法中,@@RUMCMD仍然在SELECT语句运行之后才开始执行:
#@@runcmd([命令1])# select * from t_u;
(6) 当@@RUNCMD出现在UPDATE、INSERT、DELETE等语句中时,由于语句不会返回结果集,因此@@RUNCMD不会被执行,任务日志中会有如下记录:

日志中显示“@@RUNCMD未能执行”的记录
(7) @@RUNCMD方法两端的“#”号是变量定界符,默认为“#”。当数据源是SQL Server数据库时,也可以将变量定界符设置为“${}”以免与SQL Server的临时表符号产生混淆。

设置SQL语句中的变量定界符
上述设置后,@@RUNCMD的写法应变更为
${@@RUNCMD([命令1])}
关于变量的更多信息请参见“在SQL语句中使用变量“。
(8) 如果修改了被调用的命令的名称,或是停用或删除了被调用的命令,则需要同时修改用@@RUNCMD方法调用了此命令的其它SQL命令的语句,否则任务执行时会因找不到被调用的命令而失败。
(9) 循环调用命令时,默认情况下如果某一次调用失败,会中止整个任务。如果需要在某次调用失败时忽略错误继续执行任务,可以在被调用的命令的配置中选择“当语句执行出错时忽略错误并跳过此SQL命令,继续运行任务的其他SQL命令”选项。

“忽略错误并跳过此SQL命令,继续运行任务的其他SQL命令”选项
为了让@@RUNCMD调用的SQL命令更快速地运行,EasySQLMAIL中提供了SQL命令快速运行模式。在使用@@RUNCMD调用SQL命令时,如果被调用的SQL命令符合以下条件,系统将自动使用“快速运行模式”来执行被调用的SQL命令:
(1) 被调用的SQL命令中只有一条SQL语句;
(2) 被调用的SQL命令的语句中的变量全部是“JDBC变量”格式。
例如通过@@RUNCMD命令调用下面的语句时,系统将自动使用“快速运行模式”执行被调用的SQL命令:

SQL命令中只包含了一个SQL语句,且参数全为JDBC变量的SQL命令
系统在执行此命令时将利用JDBC的批量运行功能来提高运行速度。在需要执行大量数据插入或更新(例如在数据源之间复制数据)的语句时,可以通过使用这种配置方法提高任务的运行速度。
参见“在SQL语句中使用JDBC变量”
执行计划指任务的执行时间和执行策略计划。用户通过配置执行计划来让系统在指定的时间运行任务。

任务的执行计划
一个任务可以有多个执行计划,每个执行计划的起始时间、执行间隔可以不同。例如,要从2021年10月起每月的1号、15号、25号早上8点分别执行一次任务,可以为任务配置三个执行计划,起始时间分别是2021年10月1日 08:00、2021年10月15日 08:00、2021年10月25日 08:00,执行间隔为每1月执行一次:

为任务配置多个执行计划

执行计划配置对话框
在这个对话框中:
| 执行计划的起始时间 |
任务将在这个时间第一次运行,并以这个时间为基础,每隔一段时间运行一次。 例如,当执行计划的“起始时间“是2021-10-25 08:00,执行间隔为1天,则任务将在2021-10-25 08:00第一次运行,并每隔1天运行一次,第二次运行时间为2021-10-26 08:00。 |
| 执行计划的结束时间 |
执行计划将在这个时间后停止执行。如果结束时间为空,表示该执行计划一直有效,没有结束时间。 |
| 执行间隔时间 |
指定执行计划的间隔时间,例如,每隔10分钟执行一次。EasySQLMAIL中规定的最小任务执行间隔时间是60秒。 提示:建议间隔时间根据任务的SQL语句的执行情况而定,间隔时间不应设置太小,以避免任务频繁执行而对系统造成压力。 |
| 间隔时间单位 |
设置执行计划的间隔时间单位。 · 秒:间隔X 秒执行一次。最小间隔时间不能小于60秒。 · 分钟:间隔X分钟执行一次。 · 小时:间隔X小时执行一次。 · 天:间隔X天执行一次。 · 星期:每隔X星期执行一次。 · 月:间隔X月执行一次。 · 一次性任务:执行计划将只执行一次。 |
| "仅在下列时间段内执行"选项 |
通过此选项为执行计划设置更详细的执行条件 |
| 每月的第X天到第Y天执行 |
仅在每月的某几天执行任务(执行间隔必须小于等于”1天”)。例如,要在每月的1号到5号每天早上8点执行任务,可以设置为:
|
| 每月的倒数第X天到第Y天执行 |
仅在每月的最后某几天执行任务(执行间隔必须小于等于”1天”)。例如,要在每月的最后一天早上8点执行任务,可以设置为:
|
| 每周的星期X到星期Y执行 |
仅在每周的星期X到星期Y执行(执行间隔必须小于等于”1天”)。例如,要在每周的星期一到星期三早上8点执行任务,可以设置为:
|
| 每天的X点到Y点执行 |
仅在每天的X点到Y点执行(执行间隔必须小于等于”1小时”)。例如,要在每天的9 点到17点每小时执行一次,可以设置为:
|
| 当任务运行出错或是先决条件不成立时,重试执行 |
启用此选项后,在由这个执行计划启动的任务实例执行出错或是先决条件不成立时,可以重试执行。例如,可以设置当任务没有数据时,每隔1小时重试执行一次,直到成功为止。 |
| 任务运行出错时重试 |
当执行计划启动的任务实例因SQL查询出错或是其它错误而中止时,重试执行任务。 |
| 先决条件不成立时重试 |
当执行计划启动的任务实例因先决条件不成立而中止时,重试执行任务。 |
| 任务因SQL语句无数据而中止时重试 |
当任务因为附件的SQL查询语句没有返回数据而中止时,重试执行任务。 |
| 重试间隔 |
设置每隔多久进行一次重试执行。 |
| 重试次数 |
设置最大重试次数。如果为空,将一直重试,直到任务运行成功或是到达任务的下一次执行时间为止。 |
| 计划执行成功时, 通过邮件通知我 |
当由执行计划启动的任务实例执行成功时,向任务的管理员发送一个邮件通知。 |
| 计划执行失败时, 通过邮件通知我 |
当由执行计划启动的任务实例执行失败(包括执行出错和先决条件不成立)时,向任务的管理员发送一个邮件通知。 |
数据提取码是一个特殊的字符串。指定的联系人可以使用数据提取码来主动发起数据提取请求。
例如,公司员工需要不定时地提取一些系统的告警信息。该需求的数据提取SQL是固定的,但取数的时间不确定。这时,就可以这样进行配置:
(1) 管理员在EasySQLMAIL中配置一个任务,并为任务生成一个数据提取码。任务配置好后,管理员可以将任务的数据提取码发送到员工的邮箱中。
(2) 员工在需要提取数据时,从员工的邮箱发送一封包含数据提取码邮件给EasySQLMAIL系统的发信邮件账号,EasySQLMAIL收到此邮件后,就会启动相应的任务,并将执行结果发送给员工。
数据提取码只需要生成一次,就可以多次使用。管理员可以在任务配置界面中随时更换数据提取码。更换数据提取码后,原来的数据提取码就失效了。
为保证数据的安全,EasySQLMAIL在处理数据提取请求时会对发送请求的邮件地址进行检查,只有从管理员指定的邮件地址发出的数据提取请求才会被处理,从其它地址发出的提取请求将被忽略。
(1) 在任务配置界面中生成数据提取码,并设置可以使用数据提取码进行数据提取的员工列表:

数据提取码配置
(2) 将数据提取码发送给员工:在任务列表中对应的任务中对应的任务上点击鼠标右键,然后选择“发送提取码”菜单项。系统将会向所选员工发送一个包含指定任务数据提取码的邮件。员工可以通过回复此邮件来提取数据。

系统向员工发送的包含数据提取码的邮件
启用数据提取码后,应该用于接收员工数据提取请求的发信邮件账号上启用“允许接受数据提取申请”选项,并为发信邮件账号配置“收信协议类型”以及收信服务器信息。

启用“允许接受数据提取申请”选项并配置收信协议类型
配置完成后,系统将每隔一段时间(默认每隔180秒)读取一次邮件帐号的收件箱,如果有数据提取申请,就执行对应的任务并将执行结果通过电子邮件推送给申请人。
(1) 使用数据提取码时,应该定期清理接收数据提取码的邮件帐号的收件箱,删除已处理过的邮件,以提高邮件的处理速度。
(2) 员工发送包含提取码的邮件时,应该将数据提取码包含在邮件的标题或正文中,否则系统的将无法确定应该执行哪个任务。
(3) 管理员应该只在公司内部邮件系统的中配置使用数据提取码,不在互联网环境下使用此功能,以保证数据安全。
在日常的维护工作中,我们经常需要向员工点对点单独推送一些信息,例如,将员工A的销售报表单独推送给员工A,将员工B的销售报表单独推送给员工B。这时就需要用到点对点信息分发功能。EasySQLMAIL中提供了“循环执行任务“功能,通过使用此功能可以实现点对点信息分发。
使用“循环执行任务“功能时,需要先在任务中设置一个列表(即指定循环条件),列表中包含了员工信息,任务执行时将为列表中的每条记录生成一个”子任务“,同时将列表的数据传递给”子任务“。
子任务执行时,可以根据主任务传入的循环数据执行不同的查询语句,并将执行结果发送给指定的员工。
本节将以向员工点对点推送销售统计表为例介绍点对点信息分发的使用方法。
案例:在数据库中有一个员工信息表t_staff,表中记录了员工的工号、邮件账号信息。要求系统在每天18点向员工点对点推送当天的销售量信息,查询数据所用的SQL语句如下:
SELECT 销售量,
金额
FROM t_staff_stat
WHERE 员工ID = '#员工id#'
AND 统计日期 = trunc(sysdate)

启用”按指定条件循环执行任务”选项

设置查询员工列表的SQL语句

使用变量动态确定邮件收件人

修改查询语句的查询条件,使用@@loopdata(员工ID)作为查询条件
任务执行时,将使用主任务传入的循环数据中的”员工ID”字段替换@@loopdata(员工ID)变量,最后执行的SQL语句将变成:
SELECT cnt AS 销售量,
amount AS 销售金额
FROM t_staff_stat
WHERE staff_id = '0001'--这里被替换为具体的员工ID
AND stat_date = trunc(sysdate)
主任务执行时,会为员工列表(t_staff)中的每条记录生成一个子任务,同时将每个员工的信息传递给子任务,子任务再进行查询和消息推送。

任务日志中的子任务列表
如果要将消息通过企业微信或钉钉点对点推送给员工,需要在员工列表中增加一列记录员工的企业微信或钉钉帐号,例如:

在员工列表中增加员工的”企业微信账号”列
修改循环条件中的查询员工列表的SQL语句,把员工的企业微信账号查询出来:

修改员工列表查询语句
选择企业微信收件人,并点击“从变量添加”按钮,然后点击 “系统变量/函数”的@@loopdata右侧的按钮,输入字段名“企业微信账号”:

选择企业微信收件人,并点击“从变量添加”
任务执行时,会在子任务中使用主任务传入的字段“企业微信账号”的值作为收件人账号进行消息推送。

子任务点对点推送的消息内容
(1) 循环任务的主任务在子任务运行期间会一直等待,直到所有子任务运行完成后,主任务才结束。任务运行时,如果主任务被中止,则所有未完成的子任务也会被一并中止。
(2) 默认情况下, 子任务是串行运行的,即前一个子任务结束后才会运行下一个子任务。如果您确定您的SQL语句是可以同时运行的,可以选择如下选项来提高任务的运行速度:

使用并行运行,并将任务放入任务容器运行,提高任务执行效率
关于任务容器的详细信息参见使用任务容器提高任务的执行效率。
(3) 出于安全考虑,EasySQLMAIL不会向地址薄中不存在的邮件地址推送邮件。因此在向员工进行点对点邮件推送时,必须先将员工的邮件地址添加到EasySQLMAIL的地址薄中,否则系统将不会向此邮件地址推送邮件。在某些特殊场景下,需要任务向地址薄中不存在的邮件地址推送邮件时,可以启用任务的“允许此任务发送邮件给地址薄中不存在的邮件地址”选项(仅系统管理员可以修改任务的此选项)。

启用“允许此任务发送邮件给地址薄中不存在的邮件地址”选项
有一些场景下,我们需要在SQL语句没有查询到数据的情况下中止任务的运行,以免发出无用的空消息。例如,每隔5分钟查询一次订单表,如果有新订单则将订单信息发送给指定员工,否则就中止任务。EasySQLMAIL中为您提供了三种方式来实现“无数据时中止任务”。
(1) 方式一:在设置任务附件的SQL语句时选择“如果SQL语句的查询结果为空,则终止任务”选项。当这个SQL语句查询返回的行数为0时,任务将中止:

SQL查询语句的“如果SQL语句的查询结果为空,则终止任务”选项
(2) 方式二:选择任务选项中的“如果任务中的所有附件模板的SQL语句都没有返回数据,则终止任务”选项。如果任务中所有附件的SQL语句查询返回的行数都为0时,任务中止:

任务的“ 如果任务中的所有附件模板的SQL语句都没有返回数据,则终止任务”选项
(3) 方式三:为任务配置一个"SQL命令",并将这个SQL命令设置为任务的“先决条件”。当作为“先决条件”的SQL命令查询返回的行数为0或是不满足指定条件时,任务中止。这种方式通常用来在任务开始前判断任务执行的条件是否满足(例如检查当天的统计数据是否已生成或是判断某项数据是否达到告警阀值)。

为任务设置“先决条件”
注意:如果SQL命令中使用了SQL的COUNT函数或其它聚合函数,例如:
SELECT Count(1) FROM t_stat
WHERE stat_date = trunc(sysdate)
这时即使符合条件的记录数为0,也会返回一个数据行,先决条件总是成立。因此需要将SQL语句的写法修改为:
SELECT 1
FROM t_stat
WHERE stat_date = Trunc(sysdate)
或是将先决条件的判断规则修改为下面这样:

修改先决条件的判断规则
默认情况下,EasySQLMAIL中的任务是单进程运行的。系统为每个任务实例单独启动一个操作系统进程 ,在这个进程中完成数据查询并生成要推送的内容。这种方式比较稳定,但效率相对较低,对内存、CPU等资源的要求较高。尤其是在执行循环任务等短时间内需要处理大量任务实例的时候,瓶颈效应比较明显。
为了更快速地运行任务,EasySQLMAIL中提供了“任务容器”功能。系统运行时,会为每个任务容器启动一个容器进程,执行任务时系统在容器中为每个任务实例生成一个任务线程,在线程中处理任务的内容,同时还可以在容器中使用JDBC连接池特性。
通过使用任务容器,能够让任务运行速度更快,同时还能降低对硬件资源的占用。
系统管理员可以通过点击“任务容器管理”菜单项打开容器管理界面,并点击“创建任务容器”按钮,打开容器配置对话框。

任务容器配置对话框
在这个对话框中:
| 容器ID |
由系统自动生成。 |
| 容器名称 |
为容器设置一个名称以便于管理 |
| 系统启动时自动启动此容器 |
默认情况下系统只在有任务需要在容器中运行时才会启动容器进程 。选择此选项后,系统启动时会自动启动此容器进程,可以减少任务执行的等待时间。 |
| 容器中最多同时运行的任务数 |
设置在容器中可以同时运行的最大任务数。如果同一时间内请求在容器中运行的任务数量超过此数值,则任务会被加入待执行队列,直到有任务运行完成后才运行队列中的待执行任务。默认最大任务数为10。 |
| JDBC连接池配置 |
为容器中的任务需要用到的数据源配置JDBC连接池。此选项可以减少任务请求数据源连接的等待时间,加快任务的运行速度。 |
| 任务列表 |
设置要放到此容器中运行的任务的列表 |
注意:
(1) 只有系统管理员才能创建、修改任务容器配置。
(2) 系统管理员可以根据系统资源(例如内存、CPU等资源)的使用情况,在系统中创建多个任务容器,将不同的任务放到不同的容器中运行。
(3) 如果为任务设置了任务容器,但容器状态不可用(例如容器被停用或删除),则系统将会按默认的单进程方式运行此任务。
(4) 在实际使用时,应该只将数据量少、运行稳定的任务放到容器中执行,以免某一个任务过度占用资源而影响容器中其它任务的运行。
EasySQLMAIL允许在多个系统间共享任务配置。例如,某集团的A分公司IT部门在自己的系统中配置了推送任务“员工销售报表推送”,现在B公司的IT部门也想使用这种推送方式,A公司可以从EasySQLMAIL中把“员工销售报表推送”任务的配置导出发送给B公司IT部的同事,B公司把收到的文件导入到自己的EasySQLMAIL系统中,并根据B公司的情况对任务配置进行修改,即可投入使用。
提示:导出任务时,不会导出数据源的信息(例如数据源密码等),也不会导出收件人信息。
(1) 导出任务配置:在任务列表中需要导出的任务上点击鼠标右键,然后点击“导出任务配置信息”菜单项:

点击“导出任务配置”菜单项

“导出任务”对话框
用户可以在导出任务配置对话框中为任务输入一些说明文字,在后面导入任务配置时,这些文字将显示在“导入任务配置”对话框的“任务说明”中。
点击“确定”按钮后,系统会将任务的配置内容生成为一个扩展名为”.tsk”的文件,并在浏览器中下载此文件。管理员可以将此文件发送给需要使用此任务配置的同事进行导入。
(2) 导入任务配置:在任务管理界面上点击“导入任务”按钮,并选择要导入的任务文件。

导入任务配置

“导入任务配置”对话框
用户在这个对话框中选择任务要用到的数据源和消息通道,点击“确定”后,任务将被导入到系统中。

任务被导入到系统中
任务导入后,状态是“停用”。任务的执行计划不起作用,这时任务不会自动被执行。用户应该在对任务进行测试和修改,确认任务的正确性后,再启用任务。

在右键菜单中启用任务
提示:
(1) 导出任务时,不会导出任务使用的数据源的信息(例如数据源的密码等),也不会导出任务的收件人信息。
(2) 如果任务中包含了循环列表,且循环列表的数据源是Excel表格或CSV文件,则这些Excel和CSV文件的内容会和任务配置一起被导出到tsk文件中。使用者在导入任务配置后也能够看到这些文件的内容。
在配置任务的过程中,用户可以随时对任务的配置进行测试预览,并看到执行结果。在测试任务时,测试结果仅能在控制台界面上预览 ,不会被推送出去。

测试任务对话框
在这个对话框中:
| 按正常执行流程进行预览(正常运行任务的SQL命令并执行先决条件判断) |
默认情况下,对任务进行测试预览时,系统不会执行任务的”SQL命令”中的配置内容。如果要对”SQL命令”中的内容(例如任务的先决条件)一起进行测试,可以勾选此选项。参见SQL命令的配置和使用 |
| 任务变量设置 |
在测试和运行任务时,系统默认使用变量的配置值进行运行。但系统允许用户在测试预览时为任务的变量指定与配置值不同的运行值。在本次测试和运行时,将使用指定的值作为对应变量的值。 |
注意:
(1) 如果任务的SQL语句中包含了UPDATE、INSERT、DELETE等数据修改语句,测试任务时这些语句将被真实执行。在测试开始前请确认这些语句不会对正式环境的数据库造成不良影响。
(2) 如果任务中包含循环条件,测试时系统会将任务作为单任务运行,不会按循环条件执行任务。
(3) 如果循环任务中使用了@@loopdata获取循环参数,测试时会因找不到@@loopdata对应的参数而出错。
EasySQLMAIL允许用户手动执行任务。例如,对于一些不需要定时运行的任务,可以由管理员在需要的时候手动启动任务。

手动运行任务

“运行任务”对话框
在这个对话框中:
| 任务执行成功时, 通过邮件通知我 |
手动运行的任务实例运行成功后,向任务的管理员发送一个邮件通知 |
| 任务执行失败时, 通过邮件通知我 |
手动运行的任务实例运行失败后,向任务的管理员发送一个邮件通知 |
| 任务因先决条件不成立或无数据而终止时, 通过邮件通知我 |
手动运行的任务实例因先决条件不成立或无数据中止时,向任务的管理员发送一个邮件通知 |
| 不发送任务执行后生成的邮件和消息 |
不推送任务生成的邮件和消息。但收件人可以在“EasySQLMAIL查询平台”中查询任务执行后生成的邮件。 |
| 任务变量设置 |
在运行任务时,系统默认使用变量的配置值进行运行。但系统允许用户在手动运行任务时为任务的变量指定与配置值不同的运行值。在本次运行时,将使用指定的值作为对应变量的值。 |
| 数据分发 |
对于循环任务,且循环数据的来源是“ Excel表格或CSV文件”时,可以在手动运行时为任务上传不同的循环列表。任务本次运行时将使用用户上传的循环列表作为循环数据。 提示:对于任务管理员,需要在任务选项中启用“允许任务管理员在手动启动任务时上传自己的循环表进行数据分发”选项后才能手动上传循环文件。 参见 |
(1) 任务所有者:通常指创建此任务的用户。任务所有者可以对任务进行修改、停用、删除等操作,还能够查询任务的执行日志。
系统管理员(admin用户)可以对所有任务进行修改、停用、删除和查询日志操作。系统管理员也可以改变任务的所有者。
(2) 任务管理员:任务所有者和系统管理员可以为任务指定一个或多个“任务管理员”。“任务管理员”可以对被管理的任务进行以下操作:
· 手动运行被管理的任务
· 查询自己手动运行的任务实例记录
对任务的以下操作只能由任务所有者和系统管理员进行,任务管理员无权操作:
· 修改和测试任务配置
· 启用、停用和删除任务配置

任务选项Tab页
在这个对话框中:
| 任务运行方式 |
设置任务的运行方式。可以是: · 单进程模式,为每个任务启动一个单独的进程:为每个任务实例单独启动一个操作系统进程,在进程中完成任务的处理。这种模式资源耗用较高,任务隔离性好,一个任务实例出现问题时不会影响其它任务实例的运行。 · 多线程模式,多个任务在同一个容器进程中运行:在指定的任务容器中为每个任务实例生成一个线程 ,在线程中完成任务的处理。这种模式效率高,资源耗用较少,但隔离度低,如果一个任务实例出现问题时,可能会影响同一个容器中的其它任务实例的运行。 |
| 任务容器 |
当“任务运行方式“是”多线程模式,多个任务在同一个容器进程中运行“时,在这里设置任务所在的容器。系统将在指定的容器中运行任务。参见使用任务容器提高任务的执行效率 |
| 任务内存设置:初始内存和最大内存 |
当“任务运行方式“是”单进程模式“时,可以在这里设置任务运行初始JVM堆内存数量和最大堆内存数量,内存数量单位为MB。 |
| 保留最近N天的任务数据邮件和任务运行信息 |
设置任务日志和任务生成的邮件的最大保留时间。默认保留时间与系统配置中的“保留最近N天的任务数据邮件和任务运行信息“参数一致。 |
| 如果任务开始后N分钟还未结束,就强行结束任务 |
如果任务运行超过此时间后还未结束,EasySQLMAIL会强行中止任务。如果不设置此参数,EasySQLAMIL会使用系统参数中的“任务启动N分钟后还未结束时,强行结束任务”的参数值,默认为360分钟。 |
| 如果新任务启动时任务的上一个实例正在运行, 则 |
· 等待前面的任务实例运行完后再启动新实例:串行运行同一任务的多个实例,等前面的实例运行完成后再运行后面的实例。此方式可以避免多个任务使用同样的SQL语句时造成的资源冲突。 · 新老任务实例并行运行:并行运行同一任务的多个实例,任务的多个实例可能会同时启动。 |
| 将任务的运行报告发送到 |
启用了“任务执行成功时, 通过邮件通知我“等选项时,默认情况下,系统会将任务的运行日志发送给任务的所有者;任务所有者也可以在在这里设置一个指定的邮箱来接收任务的运行日志。 |
| 发信邮箱 |
设置用于发送任务执行后生成的推送邮件的邮箱。 · 自动选择:如果系统中有多个发信账号,随机选择一个账号发送任务的邮件。 · 使用指定的发信帐号:使用指定的发信邮件账号发送任务的邮件。可以为任务指定多个发信账号。 |
| 不使用此处指定的邮件帐号发送 |
当“发信邮箱“是”自动选择“时,可以设置不使用哪些发信账号发送任务的邮件。系统在发送任务的邮件时,不使用这里指定的发信账号来发送。 |
| 使用此处指定的邮件帐号发送 |
当“发信邮箱“是“使用指定的发信帐号“时,在这里指定用于发送此任务的邮件的发信邮件账号。 |
| 回复邮件地址 |
为任务发送的邮件设置回复邮件地址。即收件人收到邮件后回复时,默认的邮件收件人地址。 注意:某些邮件服务器可能不支持此选项。 |
| 发件人名称显示为 |
为任务发送的邮件设置发件人名称。收件人浏览邮件时,这个名称将被显示在邮件发件人中。 注意:某些邮件服务器可能不支持此选项。 |
| 按指定条件循环执行任务 |
按指定的循环列表,循环执行任务,将每次执行的结果推送给不同的收件人。参见配置点对点信息分发任务 |
| 允许任务管理员在手动启动任务时上传自己的循环表进行数据分发 |
如果启用了“按指定条件循环执行任务“选项,可以在这里选择是否允许用户在手动运行任务时上传循环列表文件,系统可以按上传的循环列表文件中的数据循环执行。 提示:此选项只对“任务管理员”有效,系统管理员和任务所有者始终能够在手动运行任务时上传循环列表。参见 |
| 任务执行成功时, 通过邮件通知我 |
任务执行成后时,向任务所有者或指定的邮箱发送一个邮件通知。 |
| 任务执行失败时, 通过邮件通知我 |
任务执行失败时,向任务所有者或指定的邮箱发送一个邮件通知。 |
| 任务因先决条件不成立或无数据而终止时, 通过邮件通知我 |
任务因先决条件不成立或无数据而终止时,向任务所有者或指定的邮箱发送一个邮件通知。 |
| 记录任务运行的详细日志 |
是否记录任务运行的详细日志。如果不选择此项,任务运行完成后,任务实例记录和任务日志将被删除。 |
| 如果任务中的所有附件模板的SQL语句都没有返回数据,则终止任务 |
启用此选项后,如果任务的正文和所有附件模板的SQL语句都没有查询到数据,则中止任务。用于防止任务推送空邮件。 |
| 执行任务后,只生成邮件数据,不发送邮件 |
启用此选项后,EasySQLMAIL只执行任务并生成邮件,但不对邮件进行推送。收件人需要在“EasySQLMAIL数据查询平台”上查询任务的邮件内容。 |
| 发送邮件时,仅发送邮件的链接,不发送正文 |
选择了此选项,在任务执行完成后,将不发送任务生成的邮件数据,只发送一个带有邮件查询链接的链接邮件给收件人。收件人收到链接邮件后,点击邮件中的链接后登录到“EasySQLMAIL数据查询平台”才能查询到邮件的内容。 注意:此功能需要配置了“EasySQLMAIL数据查询平台”才能使用。参见EasySQLMAIL企业信息查询平台 |
| 通过企业微信发送时启用"安全文件"选项 |
通过企业微信推送信息时,是否使用企业微信提供的“安全文件“选项。如果启用此选项,收件人在企业微信看到的信息将被加上收件人名称水印,并且无法转发和复制消息内容。 |
| 允许此任务发送邮件给地址薄中不存在的邮件地址 |
默认情况下,EasySQLMAIL不允许任务推送邮件给地址簿中不存在的邮件地址。系统管理员可以使用这个选项来特许此任务向地址簿中不存在的邮件地址推送邮件。 注意:只有系统管理员能使用此选项。 |
| 使用CSS CLASS来减小HTML正文的文件大小 |
设置在生成HTML邮件正文时是否使用css的class来合并相同的css样式,以减小生成的邮件正文的文件大小。 提示:某些邮件浏览器不支持css class,显示时的样式可能会不同。 |
| 打开查询界面时自动启动查询 |
如果任务是交互式任务,选择此选项后,用户打开交互式查询界面时,系统将自动执行查询动作。(1.0.1215新增) |
从1.0.1215版本开始,EasySQLMAIL提供了新的任务配置管理模式。管理员可以在系统中对任务配置进行修改,并存储为草稿。后续可以打开上次保存的任务草稿继续修改。任务配置修改完成并测试通过后,管理员可以在任务配置界面上点击“发布”按钮发布新的任务配置。任务配置发布后,系统将按新的配置对任务进行调度和执行。
“保存草稿”和“发布”按钮
从1.0.1215版本开始,系统提供了“推送内容审核”功能。任务启用此选项后,任务执行的结果需要由管理员或有审核权限的用户审核通过后,系统才会把邮件和信息通过电子邮件、钉钉、企业微信等方式推送给收件人。

启用“人工审核”选项
点击系统界面左侧菜单中的”推送内容审核”菜单项,在”推送内容审核”界面中对要推送的内容进行审核。

推送内容审核
点击列表中的“任务名称”列,系统将显示要推送的内容。管理员在界面上可以看到要推送的信息、收件人、附件文件等内容。内容检查完毕后,点击“审核邮件内容”按钮,选择“审核结果”并填写“审核意见”(可选),点击“确定”保存即可。如果审核结果是“审核通过”,系统会安排将信息推送给收件人,否则系统会把邮件作废,不进行推送。

选择审核结果
EasySQLMAIL企业信息查询平台(也称为“查询服务器”)是EasySQLMAIL为企业提供的一个运行在企业内部网络上的WEB应用,主要用于查询EasySQLMAIL推送的邮件。EasySQLMAIL地址簿中的员工可以在这个平台上查询EasySQLMAIL推送给自己的邮件信息。
例如,当管理员在配置任务时使用了“发送邮件时,仅发送邮件的链接,不发送正文”选项,在任务执行完成后发送邮件时,EasySQLMAIL将只发送一个链接邮件给收件人,收件人必须点击链接邮件中的链接进入EasySQLMAIL企业信息查询平台才能查询邮件的详细内容。这种方式可以保证数据只在企业内部网络上传送,提高数据安全性。对于一些包含有超大附件的任务,也可以使用这种方式为员工提供查询。
企业信息查询平台中还设置了本地应用接口,管理员可以将企业信息查询平台作为企业内部的其它应用的统一入口,员工只要登录到企业数据查询平台中,就可以快速打开其它的WEB系统的页面。

EasySQLMAIL数据查询平台
EasySQLMAIL安装完成后,默认未启用EasySQLMAIL信息查询平台。系统管理员可以在“企业数据发布平台管理”中配置并启用企业信息查询平台功能。

打开“查询服务器”管理对话框

查询服务器配置对话框
在这个对话框中:
| 查询服务器对外提供服务的IP地址 |
输入查询服务器对外提供查询的IP地址。用户可以通过这个IP地址访问查询服务的网页。在发送给用户的链接邮件中,此IP地址也会被作为查询服务的网站链接在邮件中列表,用户可以在企业内部网络上通过点击这些链接直接打开查询服务的页面。 |
| 服务器端口 |
输入查询服务器对外提供查询服务的端口。如果不指定此参数,查询服务默认使用9550端口对外提供查询服务 |
| 服务器域名 |
输入查询服务器对外提供查询的域名。用户可以通过这个域名访问查询服务的网页。在发送给用户的链接邮件中,此域名也会被作为查询服务的网站链接在邮件中列表,用户可以在企业内部网络上通过点击这些链接直接打开查询服务的页面。如果查询服务器没有配置域名,则可以不用输入此参数。 |
| 查询服务器对内连接核心系统的IP地址 |
输入查询服务器连接EasySQLMAIL时使用的IP地址。此地址是查询服务器所在的主机上的一个IP地址,这个IP地址能够连接到EasySQLMAIL所在的主机。在EasySQLMAIL的查询服务器列表中,此IP地址不能重复。 如果查询服务器与EasySQLMAIL在同一个机器上,这里填写127.0.0.1即可。 |
| 核心系统服务接口IP地址 |
输入查询服务器连接EasySQLMAIL时使用的IP地址。此地址是查询服务器所在的主机上的一个IP地址,这个IP地址能够连接到EasySQLMAIL所在的主机。在EasySQLMAIL的查询服务器列表中,此IP地址不能重复。如果查询服务器与EasySQLMAIL系统在同一个机器上,这里填写127.0.0.1即可。 |
| 员工登录查询系统时,需要输入数字验证码进行身份验证 |
设置当员工登录查询系统时是否需要输入数字验证码。启用此选项后,员工登录查询系统时,系统会通过电子邮件或是企业微信、钉钉等方式向员工发送一个数字验证码,员工在登录界面中输入此验证码后完成登录过程。 |
| 验证码发送方式 |
选择登录验证码的发送方式。默认通过电子邮件发送验证码给员工。 |
| 消息通道 |
选择推送验证码的消息通道 |
| 默认初始员工登录密码 |
设置一个密码,当员工第一次登录查询系统时,输入这个密码进行登录。登录成功后,系统将强制要求员工修改登录密码。 |
| 重新生成此查询服务器的访问凭据 |
修改查询服务器配置时可使用此选项。选择此选项后,系统将为查询服务器重新生成一个访问凭据。查询服务器向EasySQLMAIL查询数据时,会同时发送这个访问凭据,EasySQLMAIL系统通过核对访问凭据来验证查询服务器的请求是否合法。 提示:重新生成查询服务器访问凭据后,需要重启查询平台的服务程序,新的配置才能生效。 |
| 重新生成此服务器的HTTPS证书 |
修改查询服务器配置时可使用此选项。选择此选项后,系统将为查询服务器重新生成新的HTTPS证书。 提示:重新生成查询服务器HTTPS证书后,需要重启查询平台的服务程序,新的配置才能生效。 |
系统管理员可以通过运行EasySQLMAIL安装目录下的queryServer\ startup.bat来启动查询服务器。也可以执行queryServer\ installservice.bat程序将查询服务器安装为系统服务,在操作系统启动时自动启动查询服务器。

允许联系人登录查询平台
在这个对话框中:
| 允许登录查询服务器 |
允许员工登录企业查询平台 |
| 查询服务器登录帐号 |
可以为空。默认情况下,员工可以使用电子邮件地址、手机号码登录企业查询平台。管理也可以为员工设置一个登录帐号,员工用这个帐号登录企业查询平台。” 查询服务器登录帐号”在系统中必须唯一。 |
| 查询服务器登录密码 |
管理员可以为员工设置“查询服务器登录密码”。如果不设置,员工第一次登录时应该使用“查询服务器管理”中设置的“默认初始密码”进行登录。 提示:管理员设置了员工密码后,员工下次登录时必须重新设置登录密码。 |
| 下次登录查询服务器时必须修改密码 |
勾选此选项后,员工下次登录查询平台时必须修改登录密码。 |
| 本地应用菜单权限 |
设置员工可见的本地应用列表。 |
系统管理员可以将企业的其它WEB系统的链接放入EasySQLMAIL企业信息查询平台界面中。

在查询服务器中添加企业应用的链接
在这个对话框中:
| 应用名称 |
为应用设置一个名称。这个名称将被显示在企业信息查询平台界面的左侧菜单中。 |
| 应用类型 |
目前只支持“外部的Web应用”。员工在界面上点击应用名称后系统打开对应WEB应用程序的页面。 |
| URL |
输入本地应用的网站链接 |
| 打开方式 |
在查询程序主界面的TAB页中打开:在查询程序的界面中打开应用。 在新窗口中打开:打开一个新的浏览器窗口,在新的窗口中打开应用程序。 |
| 应用说明 |
可以在这里为应用输入一些说明文字以便于管理。 |
添加应用程序链接后,还需要在地址簿中为员工添加应用权限:

为员工添加应用权限
员工登录查询平台后,将能够在界面左侧的菜单中看到对应的应用:

应用将显示在左侧菜单的“本地应用”中
(1) 从企业微信或订订平台上同步通信录到EasySQLMAIL时,如果需要允许员工登录查询平台,可以在企业微信或钉钉消息通道的配置中启用“允许员工登录EasySQLMAIL企业信息查询平台”选项。系统读取员工信息后,会同时启用地址簿中对应的员工的“允许登录查询服务器”选项。

从企业微信、钉钉读取员工信息时启用“允许员工登录EasySQLMAIL企业信息查询平台”选项
(2) 员工登录企业信息查询平台后,可以查询到EasySQLMAIL通过电子邮件推送给员工的所有邮件记录,但不能查询通过企业微信、钉钉推送的消息记录。
(3) 员工在邮件客户端中删除收到的邮件时,不会影响EasySQLMAIL中的对应邮件记录。如要删除查询平台上的邮件记录,需要登录查询平台后进行操作。在查询平台上删除邮件记录时,系统先将被删除的邮件记录移动到回收站,如果确实不再需要被删除的邮件,清空回收站即可。
(4) EasySQLMAIL会定时对过期邮件(超过系统配置中设置的“最大数据邮件保留期限”的规定)进行清理。邮件被清理或是任务的执行日志被管理员删除后,在查询平台上将不能再查询到对应的邮件。
用户可以在控制台界面中查询到任务的运行日志和任务生成的邮件内容。

任务日志查询界面
系统管理员能够在这个界面中查询到所有任务的运行日志,其他用户可以查询到自己创建的任务的运行日志,任务管理员可以在这里查询到自己负责管理的任务的运行日志。
用户可以在这里删除查询到的任务的运行日志。日志删除后,任务生成的邮件会同时被删除,企业信息查询平台上也无法再查询到被删除的任务邮件。

邮件管理界面
系统管理员可以在这里查询到系统推送的所有邮件。其他用户可以在这里查询到自己创建或管理的任务生成的邮件。
在这个界面中,“邮件列表”列出了系统中的所有邮件的信息,“邮件发送记录”列出了邮件的发送记录。
用户可以在这里删除查询到的任务邮件。任务邮件被删除后,企业信息查询平台上将无法再查询到被删除的任务邮件。

企业微信、钉钉消息记录查询
系统管理员可以在这里查询到系统推送的所有消息记录。其他用户可以在这里查询到自己创建或管理的任务生成的消息记录。

邮件接收日志查询
在发信邮件帐号启用了“允许接受数据提取申请”选项后,系统管理员可以在“邮件接收日志查询”中查询到邮件接收的日志记录。日志中显示了系统通过邮件帐号接收到的邮件以及邮件的处理结果。
关于数据提取的更多信息请参阅 数据提取码。

操作日志查询界面
系统管理员可以在这个界面中查询到所有用户的操作日志,其他用户可以查询到自己的操作日志。

运行日志查询界面
系统管理员可以在这个界面中查询到系统和每个服务模块的运行日志及错误信息。

执行计划状态查询
这里显示了任和务的执行计划的执行间隔、上次运行时间、下次运行时间以及上次失败时间。还能够查询到执行计划的运行记录。
系统管理员可以在这里查询到所有任务的执行计划状态信息,其他用户可以查询到自己创建或管理的任务的执行计划信息。
关于执行计划的更多信息请参阅 为任务配置执行计划。
EasySQLMAIL中查询数据时需要连接数据源进行操作。为保证数据源的安全,建议在配置数据源时注意以下事项:
(1) 不使用EasySQLMAIL直接连接关键的核心数据库,以防止因为任务配置错误(例如任务执行频率过高或是查询语句效率太低,耗费大量数据库主机资源)而对核心数据库造成影响,干扰企业关键应用的工作。一种推荐的组网方式是,在企业中安装一个数据库作为中间数据库,由核心数据库定时将需要推送的数据下发到中间数据库上,EasySQLMAIL再从中间数据库中读取推送数据进行推送。这种模式具有较好的隔离性,不会因为任务配置问题或是SQL语句的运行效率问题影响核心数据库的正常运行。

使用中间数据库存放推送信息
(2) 不使用大权限数据库账号配置数据源:在配置数据源时,不使用大权限的数据库账号(例如sa、sys、root等账号),也不使用生产系统的数据库账号来连接数据源。应该专门创建一些权限小的查询账号供EasySQLMAIL使用,根据取数需要再赋予这些小权限账号SELECT或其它数据库操作权限。这样可以有效控制数据库访问权限。
(3) 不将创建数据源权限开放给其他用户:一般情况下,admin不应将创建数据源的权限赋予其他用户。创建数据源时,应该由admin根据企业IT安全规定对取数需求进行评估后,再创建数据源,并将数据源的使用权限指派给相应用户。
(4) 谨慎使用DDL及数据修改语句:配置任务时,如果SQL语句中有DDL语句(例如CREATE,DROP,ALTER,TRUNCATE等)或是INSERT、DELETE、UPDATE语句时,应对语句和所配置的任务进行严格测试确认语句的正确性后再上线使用。
(5) 在任务上线前仔细进行测试,确保查询和推送的正确性:管理员在新配置的任务上线前应该对任务的执行结果进行仔细检查,确保任务生成的数据内容及推送方式、推送目标正确无误后再将任务正式上线运行。
(6) 仔细检查导入任务的语句配置:在导入任务后,应该对导入的任务内容进行检查、评估,确认导入的任务中的SQL语句不会与本地系统冲突,然后再进行测试、使用。这里的冲突主要是指SQL语句中涉及的表等数据库对象的CREATE、UPDATE、INSERT、DELETE和DROP、TRUNCATE等操作。例如,导入的任务中有一个SQL语句:“DROP TABLE T_BT”这个表在任务的设计者那里仅仅是一个普通的临时表,但在本地,这个表是一个重要的数据表,那么这个任务导入后,如果对任务进行测试(预览)或运行,就会错误地将表T_BT删除,这会造成不可挽回的损失。所以,在预览和执行任务前,应仔细检查任务的SQL语句等内容,确认任务的安全性后再使用。
为保证各类密码的安全,EasySQLMAIL在传输和存储密码时对密码进行了多层加密。但为更进一步保证系统安全,在使用时还需要注意以下事项:
(1) 不在公网或不安全的网络上暴露EasySQLMAIL系统的WEB控制台程序。EasySQLMAIL安装完成后,只能在安装的主机上通过访问http://127.0.0.1:9110访问EasySQLMAIL控制台。建议系统管理员使用此访问方式。
(2) 只允许指定的IP地址访问EasySQLMAIL的WEB控制台。EasySQLMAIL中自带了IP访问限制策略。如果您的操作系统有网络防火墙,或是有其他类型的网络防火墙,也可以用这些网络防火墙实现IP访问限制。如果一定要对其它IP地址开放访问权限,建议在系统配置中启用“使用安全HTTP协议(HTTPS)连接WEB控制台界面”选项。
(3) EasySQLMAIL系统的用户应使用复杂的登录密码,并定期更换,以避免密码被猜出而造成损失。EasySQLMAIL所在的服务器主机也应使用强密码进行保护。
(4) 开启EasySQLMAIL的登录验证码功能,在用户登录EasySQLMAIL的控制台和企业信息查询界面时,需要输入系统发送的数字验证码,可以增强系统的安全性,防止非法登录。
(5) 使用强密码保护EasySQLMAIL所在的服务器主机,防止无关人员登录主机后对系统进行非法操作。
(1) 评估推送方式是否符合企业IT安全管理制度的要求。在配置信息推送任务前,应根据您的企业内部对信息安全管理的相关制度和要求,评估要推送的信息是否适合通过EasySQLMAIL系统进行推送。
(2) 根据企业的IT信息管理制度及国家信息安全相关法律法规对推送信息进行脱敏处理。例如,应该对推送信息中涉及到的公民个人信息的内容进行脱敏处理,以防止公民的个人信息泄露。
EasySQLMAIL系统管理员应定期对EasySQLMAIL系统所在的目录进行备份,并对备份数据进行加密后妥善保管,以便在主机发生故障时能够快速地恢复EasySQLMAIL的运行。
EasySQLMAIL系统在进行信息推送时会受到很多外部条件的约束。例如,公司的邮件服务器可能会将EasySQLMAIL系统发出的邮件误判为垃圾邮件而拒收,有一些邮件服务器可能会延迟一段时间后才能收到邮件。
为避免因这些情况导致您的工作事务被延误,在正式启用一个信息推送任务之前,管理员需要仔细对任务进行测试,确保任务发出的邮件或消息能在要求的时间内正确送达给指定收件人。
EasySQLMAIL数据发布系统由成都国南新锐信息技术有限公司开发和维护,国南新锐信息技术有限公司拥有此软件的全部知识产权。
如果您在使用EasySQLMAIL时遇到问题,或是有关于EasySQLMAIL改进的建议或意见,请通过以下方式联系我们:
E-mail: sqlmail@easysqlmail.com或easysqlmail@qq.com
技术网站: https://www.easysqlmail.com
国内镜像站点:https://www.newnet123.com
技术支持QQ:2653224771
感谢您使用EasySQLMAIL。