Enviando e-mail pelo Fluig.

Objetivo

Iremos construir um template que seja possível enviar lista de dados para melhor otimizar nosso template e código.

O artigo oficial de envio de e-mail pelo Fluig está disponível neste link, portanto o que irei destacar abaixo foram resultados de observações e estudos.

O objetivo deste estudo é entender quais tecnologias o Fluig utiliza para entregar a solução de E-mail e do Template de E-MAIL e estudar uma forma mais limpa de construir os templates.

Utilize estas informações para agregar em seus estudos, porém sempre que houver dúvidas consulte o suporte e documentação oficial do Fluig.

Disclaimer: as ações são responsabilidades dos usuários.

Caso seu fluig não dispare os e-mails consulte a documentação: fluig não dispara e-mail.

Freemarker

O freemarker é uma tecnologia em java para construção de templates, é bem utilizado nas construções de widgets.

Fazer um bom uso do FreeMarker com certeza gera ganhos em produtividade e manutenção de códigos.

Recomendo a leitura neste link: https://freemarker.apache.org/docs/ref_directive_list.html

Enviar o E-mail pelo Fluig

Para enviar o E-mail pelo Fluig é necessário utilizar o recurso onNotify, confira de forma detalhada neste link: https://tdn.totvs.com/display/public/fluig/Templates+de+e-mail+personalizado

Resultado Final

Ao executar o passo a passo abaixo você deverá ter um resultado semelhante a este:


Passo a Passo

Evento de Processo

Crie um processo e acrescente o código abaixo em um evento de processo, como por exemplo: o BeforeStateEntry

Veja abaixo que estamos utilizando a variável UFS e a variável CarrosList, desta forma enviamos a lista de objetos que será lida pelo FreeMarker.

try{
	    //Monta mapa com parâmetros do template
	    var parametros = new java.util.HashMap();
	    
	  
	    
	    //Veja mais detalhes em: 
	    parametros.put("NOME_USUARIO", "UsuarioFluig");
	    parametros.put("CODIGO_USUARIO", "UsuarioFluig");
	    parametros.put("calculo", 1+1);
	    parametros.put("SERVER_URL",    fluigAPI.getPageService().getServerURL()  ) ;
	    
//E-mail
	    parametros.put("subject", "Assunto do E-mail");
	     
	     var ufs = new java.util.ArrayList();
	     ufs.add("GO");
	     ufs.add("SP");
	     ufs.add("AC");
	     
	     
	     var carrosList = new java.util.ArrayList();
	     
	     var carro = new java.util.HashMap();
		   
	     carro.put("modelo", "GOL");
	     carro.put("cor", "BRANCO");
	     carro.put("motor", "1.0");
	     
	     carrosList.add(carro);
	     
	     var carro = new java.util.HashMap();
	     
	     carro.put("modelo", "Civic");
	     carro.put("cor", "cinza");
	     carro.put("motor", "5.0");
	     
	     carrosList.add(carro);
	     
	     var carro = new java.util.HashMap();
	     
	     carro.put("modelo", "PALIO");
	     carro.put("cor", "verde");
	     carro.put("motor", "1.5");
	     
	     carrosList.add(carro);
	     
	     var carro = new java.util.HashMap();
	     
	      
	    
	    parametros.put("estados", ufs);
	    parametros.put("carros", carrosList);
	 
	    //Monta lista de destinatários
	   
	    
	    var destinatarios = new java.util.ArrayList();
	    
	    
	    destinatarios.add("[email protected]");
	    
	    	//Envia e-mail
	    	notifier.notify("UsuarioFluig", "template_teste", parametros, destinatarios, "text/html");
	    
	     
	} catch(e){
		throw e;
	    log.info(e);
	}

Após criar o processo crie um novo arquivo html chamado template_teste.html e salve ele em seu computador, em seguida acesse o fluig > Painel de Controle > Templates de E-mail e crie um template importando este arquivo html.

HTML – Template de E-mail Fluig

Veja que as variáveis são passadas dentro deste bloco ${estado} , onde neste exemplo o estado é o nome do meu objeto no evento de processo, que foi recebido na variável de parametros.

Eu recomendo que teste utilizar da seguinte forma, ${estado!”}, pois assim a variável estado se não existir irá imprimir um valor em branco.

Este tipo de situação acontece, onde a variável pode não ter sido gerada corretamente, principalmente em elementos do tipo lista e geração dinâmica.

Utilizar este modelo onde substitui a inexistência da variável por um valor em branco pode suprimir erros, pois no primeiro exemplo, caso a variável estado não exista poderá haver erros na geração e disparo do e-mail.



Este é um exemplo de envio de e-mail  <br/> <br/>

A soma de 1 + 1 é ${calculo}  <br/> <br/>

A url do fluig é: <a href="${SERVER_URL!''}"  <br/> <br/>



<html>
	<#if estados??> 
	<tr>
		<td>UF ( Estado )</td>
	</tr>

	<#list estados as estado>
	<tr>		
       <td>
		  ${estado!''}
	    <td>
	</tr>
		</#list>
	</#if>
</html>

-------------------------------------------

LISTA DE CARROS

-------------------------------------------

<#if carros??> 
<html>
	<tr>
		<td>Marca</td>
		<td>Cor</td>
		<td>Motor</td>
	</tr>
	<#list carros as carro>
	<tr>
		<td>${carro.modelo!''}</td>
		<td>${carro.cor!''}</td>
		<td>${carro.motor!''}</td>
	</tr>
	</#list>
	</tr>
</html>
</#if>

Referências

Acessos em: 10 de ago. 2021.

https://freemarker.apache.org/docs/ref_directive_list.html
https://api.fluig.com/old/sdk/com/fluig/sdk/service/PageService.html
https://fluiggers.com.br/t/como-pegar-url-do-ambiente-fluig-que-estou/157/7