客户需求
定期扫描数据表,将结果以表格形式发给相关人。
解决方案
模拟扫描数据表
这里假设用户扫描商品表并发送结果,扫描结果如下:
新建SQL模板
在ESAP根目录/sql/esap
目录下复制email.get
和email.put
模板文件,修改为自定义模板,例如加入后缀.my
email.get副本
中的sql代码如下:
自定义邮件配置,仍然使用ES系统邮件配置
{{define "email.conf.my"}}
SELECT
isnull(SmtpServer,'') server,
isnull(SmtpPort,0) port,
isnull(SmtpAuth,0) auth,
isnull(SmtpUseSSL,0) ssl,
isnull(EmailSender,'') sender,
isnull(EmailAddress,'') addr,
isnull(EmailPassword,'') pwd
FROM essystem..es_sysinfo
{{end}}
自定义邮件提醒
{{define "email.my"}}
select
'woylyn@qq.com' mailto,
'备库提醒' subject,
'下列商品请注意备库存:<br><table border="1">' + replace(
(select '品号' as th ,'品名' as th_,'类别' as th__,'库存' as th___ for xml path('tr'))
+ (select 号 as td , 名 as td_,类 as td__,0 as td___ from 品 for xml path('tr')
),'_','') + '</table>' content,
'' pic,
'' files,
0 id,
'' mailfrom,
'' pwd
{{end}}
自定义邮件扫描sql代码执行效果如下,主要使用replace函数和for xml path拼接构造html表格标签。
email.put副本
中的sql代码如下,是个空模板,不做任何操作:
{ {define "email.my"} }
{ {end} }
创建邮件任务
配置esap,加入邮件提醒计划,设置每天9点,配置加入后缀.my
,启动即可。
邮件实际效果
拓展
加入样式,实现更美观的表格邮件:
小结
1.主要应用esap自定义邮件提醒,使用自定义sql模板。
2.使用replace函数和for xml path拼接构造html表格标签
本文示例ES数据库与往期相同,不再提供额外下载。
2019-04-24