JS实现静默发送邮件功能(选择填报提交后发送、数据查询后发送参考前者)

1.场景描述编辑

 

FineReport中提供了各种发送邮件的方法,比如报表工具栏手动点击发送邮件,控件点击或编辑后发送邮件,决策系统中定时任务发送邮件等等;

但是在某些场景下,比如填报完某个页面后,判断填报中出现了某个关键字,此时需要发送邮件给某个领导,而使用定时任务可能不及时,也会以占用服务器资源,使用手动发送则比较麻烦,需要填写收件人,抄送人,内容等等,比如我们需要在填报成功后通过JS判断,符合某个条件时,需要发送邮件,而且发送指定的内容,这时就需要用到JS发送邮件功能了。

需求:模板中选择了一批数据中发生了中止,填报成功后立即通过邮件告知,并发送中止的内容信息。



 

 

2.解决思路编辑

 

在JS中,FineReport提供了_g().emailReport()这个方法来启动发送邮件功能,但是仍然弹出的是手动发发邮件的功能,我们可以使用FR.sendMail()方法来实现更加灵活的发送邮件功能

 

 

3.解决方案编辑

 

要求填报成功后检测到中止列中有勾选中止时,发送邮件,并提示哪些信息发生了中止

打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm1.cpt,添加一个填报成功事件,如下图:



 

js代码如下:

 

 

  1. function encode(s) //对符号进行转义    
  2. {    
  3.     s=s.replace(/'<');    
  4.     s=s.replace(/>/g,'>');    
  5.     s=s.replace(/"/g,'"');  
  6.     return s;  
  7.  
  8. var v=false;  
  9. var content='';  
  10. content+='以下产品发生了中止:0" border="1">';  
  11. var row=0;  
  12. content+='产品名称供应商类别成本价单价库存量订购量再订购量';   
  13. $('td[id^="K"]').each(function(i,e){    //K表示第K列遍历数据源,i为索引值,e为值
  14.    if($(e).attr('cv')=='true' || $(e).attr('cv')=='真' )  
  15.     {  
  16.         v=true;//判断是否选择了中止  
  17.         row=$(e).attr('row');  
  18.         content+=''+$('.x-table td[col=2][row='+row+']').text()+'';//添加该行第3列内容  
  19.         content+=''+$('.x-table td[col=3][row='+row+']').text()+'';//添加该行第4列内容  
  20.         content+=''+$('.x-table td[col=4][row='+row+']').text()+'';//添加该行第5列内容 
  21.         content+=''+$('.x-table td[col=5][row='+row+']').text()+'';//添加该行第6列内容  
  22.         content+=''+$('.x-table td[col=6][row='+row+']').text()+'';//添加该行第7列内容  
  23.           content+=''+$('.x-table td[col=7][row='+row+']').text()+'';//添加该行第8列内容  
  24.           content+=''+$('.x-table td[col=8][row='+row+']').text()+'';//添加该行第9列内容  
  25.         content+=''+$('.x-table td[col=9][row='+row+']').text()+'';//添加该行第10列内容  
  26.     }  
  27.    });  
  28.    content+='';  
  29.    //如果选择了中止,就发送邮件  
  30. if(v){  
  31.     FR.sentMail({xmlconf:""1.0\" encoding=\"UTF-8\"?>+encode(content)+"\" showTplContent=\"false\"/><\/R>"})    
  32.     
  33. }  

其中,发送邮件里面的参数有几个需要在实际实用中修改

  参数 描述  
  mailTo   收件人邮箱地址,可以是多个
  cc   抄送邮箱地址
  bcc   密件抄送邮箱地址
  tittle   邮件主题
  mainText   邮件主要内容
 showTplContent   是否显示报表内容

注:发送邮件需要设置发件人账户,点击管理系统>系统管理>邮件,进行配置,详细请查看系统管理中的邮箱配置;

另:如果在邮箱配置中邮件总是发送失败,请查看邮箱配置失败

 

填报成功后,如果选了中止,就会发送邮件,并且显示发送结果,最终效果如上图。

你可能感兴趣的:(帆软)