ESAP达摩院 思想有多远,我们就能走多远

ESAP高级教程|扫描数据库发送表格邮件

2019-04-24
             

客户需求

定期扫描数据表,将结果以表格形式发给相关人。

解决方案

模拟扫描数据表

这里假设用户扫描商品表并发送结果,扫描结果如下:

新建SQL模板

ESAP根目录/sql/esap目录下复制email.getemail.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


近似文章