Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

9 - Corpo E-mail - Dados do HTML e CSS para personalizar o E-mail que será enviado conforme tópico Código exemplo de HTML para geração do E-mail.

10 - Func. Dados - Função de dados para extrair informações da rotina para preencher o E-mail.

    • A função de dados deve retornar um objeto JSON onde os atributos devem ser um sequencial de numeral conforme o exemplo no tópico Função de Dados Exemplo.
    • Para função de usuário, deve-se inserir a chamada completa U_FuncaoUsuario sem parenteses.

11 - Funcao Conf. - Função que chamará esse Gerenciador de contas de e-mail (No Exemplo está sendo chamado ao Bloquear um Beneficiário).

...

Código Exemplo de HTML Para a Geração do E-mail

Bloco de código
languagexml
themeRDark
titleExemplo
linenumberstrue
<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      body {
        font-family: Arial, sans-serif;
        margin: 0;
        padding: 0;
        background-color: #f4f4f4;
      }
      .container {
        max-width: 600px;
        margin: 40px auto;
        padding: 20px;
        border-radius: 8px;
        background-color: #ffffff;
        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
      }
      .header,
      .footer {
        background-color: #6c9ebd;
        color: #ffffff;
        text-align: center;
        padding: 10px;

Função de Dados Exemplo:

Bloco de código
languagec#
themeRDark
titleExemplo
linenumberstrue
#INCLUDE "Totvs.ch"

function dados()

	Local cCompHtml   := ""
	Local oJEmailData := JsonObject():New()

	cCompHtml += "<tr>"
	cCompHtml += "	<td>" + AllTrim(BA1->BA1_NOMUSR) + "</td>"
	cCompHtml += "	<td>" + DTOC(BA1->BA1_DATINC) + "</td>"
	cCompHtml += "	<td>" + DTOC(BA1->BA1_DATBLO) + "</td>"
	cCompHtml += "</tr>"    

    oJEmailData["1"] := BA1->BA1_NOMUSR  
	oJEmailData["2"] := BA1->(BA1_CODINT+BA1_CODEMP+BA1_MATRIC+BA1_TIPREG+BA1_DIGITO)  
	oJEmailData["3"] := BA1->BA1_EMAIL  
	oJEmailData["4"] := BA1->BA1_TELEFO  
	oJEmailData["5"] := cCompHtml

Return oJEmailData

Código exemplo de HTML para geração do E-mail

Bloco de código
languagexml
themeRDark
titleExemplo
linenumberstrue
<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      body {
        fontborder-familyradius: Arial, sans-serif;
   8px 8px 0 0;
      }
      margin: 0;.footer {
        paddingborder-radius: 0 0 8px 8px;
        backgroundmargin-colortop: #f4f4f420px;
        font-size: 14px;
      }
      .containerh2 {
        maxtext-widthalign: 600pxcenter;
        margincolor: 40px auto#333;
      }
      padding: 20px;.info {
        border-radiuspadding: 10px 8px0;
        backgroundfont-colorsize: #ffffff16px;
        box-shadowcolor: 0#555;
 4px 8px rgba(0, 0, 0, 0.05);
 }
      .info strong }{
      .header,
  color: #222;
   .footer {
  }
      background-color: #6c9ebd;table {
        colorwidth: #ffffff100%;
        textborder-aligncollapse: centercollapse;
        paddingmargin-top: 10px20px;
        border-radius: 8px 8px 0 0;}
      }th,
      .footertd {
        border-radius: 01px 0solid 8px 8px#ddd;
        margin-toppadding: 20px12px;
        fonttext-sizealign: 14pxleft;
      }
      h2th {
        textbackground-aligncolor: center#6c9ebd;
        color: #333#ffffff;
      }
      .infotr:nth-child(even) {
        padding: 10px 0;background-color: #f9f9f9;
      }
      .company-name {
        font-size: 16px20px;
        color: #555#333;
      }
  text-align: center;
       .info strong { margin-bottom: 20px;
        colorfont-weight: #222bold;
      }
    </style>
  table {</head>
  <body>
      width: 100%;<div class="container">
        border-collapse: collapse;<div class="header">
        margin-top: 20px;<h2>Usuario Bloqueado</h2>
      }
      th,</div>

      td {<p class="info">
        border: 1px solid #ddd;<strong>Prezado(a):</strong> ##1, portador da matrícula
        padding: 12px;<strong>##2</strong>
        text-align: left;</p>

      }
      th {<p class="info">Esperamos que esta mensagem o(a) encontre bem.</p>
        background-color: #6c9ebd;<p class="info">
        color: #ffffff;
      }
      tr:nth-child(even) {
Verificamos em nosso sistema que seu plano de saúde foi bloqueado devido
        à inadimplência. Conforme background-color: #f9f9f9;
      }a Resolução Normativa nº 593 da ANS (Agência
      .company-name {
        font-size: 20px;  Nacional de Saúde Suplementar), o contrato pode ser suspenso ou
        color: #333;
        text-align: center;rescindido caso haja atraso superior a 60 dias, consecutivos ou não.
        margin-bottom: 20px;</p>
        font-weight: bold;
<p class="info">
       }
 Para restabelecer  </style>
  </head>
  <body>seus serviços de assistência à saúde, é necessário
    <div class="container">
   regularizar os débitos <div class="header">
     pendentes. Caso já tenha efetuado o pagamento,
   <h2>Usuario Bloqueado</h2>     pedimos a gentileza de desconsiderar esta mensagem.
      </div>
p>
      <p class="info">
        Estamos à disposição para <strong>Prezadoauxiliá-lo(a):</strong> ##1, portador da matrícula no que for necessário.
        <strong>##2</strong></p>

      </p><table>

       <p class="info">Esperamos que esta mensagem o(a) encontre bem.</p>
 <thead>
          <tr>
  <p class="info">
        Verificamos em<th>Nome</th>
 nosso sistema que seu plano de saúde foi bloqueado devido
  <th>Data de Inclusão</th>
    à inadimplência. Conforme a Resolução Normativa  593 da<th>Data ANS (Agência
de Bloqueio</th>
         Nacional de Saúde Suplementar), o contrato pode ser suspenso ou </tr>
        </thead>
        <tbody>
        rescindido caso haja##5
 atraso superior a 60 dias, consecutivos ou não.</tbody>
      </p>table>

      <p<div class="infofooter">
        Para<p>
 restabelecer seus serviços de assistência à saúde, é necessário
 Entre em contato conosco para mais  regularizar os débitos pendentes. Caso já tenha efetuado o pagamento,
    informações.<br />Email: ##3 |
          Telefone: ##4
    pedimos a gentileza de desconsiderar esta mensagem. </p>
      </p>div>
    </div>
  <p class="info">
        Estamos à disposição para auxiliá-lo(a) no que for necessário.
      </p>

      <table>
        <thead>
          <tr>
            <th>Nome</th>
            <th>Data de Inclusão</th>
            <th>Data de Bloqueio</th>
          </tr>
        </thead>
        <tbody>
          ##5
        </tbody>
      </table>

      <div class="footer">
        <p>
          Entre em contato conosco para mais informações.<br />Email: ##3 |
          Telefone: ##4
        </p>
      </div>
    </div>
  </body>
</html>

...

</body>
</html>


10 - Func. Dados - Função que retorna os dados que por sua vez irão substituir as marcações no HTML com o ##Número.

    • Para função de usuário, deve-se inserir a chamada completa U_FuncaoUsuario sem parênteses.
    • A função de dados deve retornar um objeto JSON onde os atributos devem ser um sequencial de numeral conforme o exemplo no tópico Exemplo de Função de Dados.

      Exemplo de Função de Dados:

      Bloco de código
      languagec#
      themeRDark
      titleExemplo
      linenumberstrue
      #INCLUDE "Totvs.ch"
      
      function dados()
      
      	Local cCompHtml   := ""
      	Local oJEmailData := JsonObject():New()
      
      	cCompHtml += "<tr>"
      	cCompHtml += "	<td>" + AllTrim(BA1->BA1_NOMUSR) + "</td>"
      	cCompHtml += "	<td>" + DTOC(BA1->BA1_DATINC) + "</td>"
      	cCompHtml += "	<td>" + DTOC(BA1->BA1_DATBLO) + "</td>"
      	cCompHtml += "</tr>"    
      
          oJEmailData["1"] := BA1->BA1_NOMUSR  
      	oJEmailData["2"] := BA1->(BA1_CODINT+BA1_CODEMP+BA1_MATRIC+BA1_TIPREG+BA1_DIGITO)  
      	oJEmailData["3"] := BA1->BA1_EMAIL  
      	oJEmailData["4"] := BA1->BA1_TELEFO  
      	oJEmailData["5"] := cCompHtml
      
      Return oJEmailData

11 - Funcao Conf. - Função que chamará esse Gerenciador de contas de e-mail (No Exemplo está sendo chamado ao Bloquear um Beneficiário).

    • A função inseridano campo Funcao Conf. não pode ser do tipo static e deverá fazer a chamada da função conforme tópico Função de Configuração.
    • Para função de usuário, deve-se inserir a chamada completa U_FuncaoUsuario sem parênteses.

Envio de E-mail Utilizando a Configuração do Gerenciador de Contas de E-mail

Após realizar a configuração de uma conta de e-mail no gerenciador de contas de e-mail, esta configuração poderá ser utilizada para enviar e-mails levando em consideração os dados de remetente e o layout em HTML do corpo do e-mail inserido na configuração. Para isso, basta utilizar o método SendEmailUsingConfigurator da classe EmailConfigurator, passando apenas alguns parâmetros, essa classe identifica a configuração que deve ser utilizada para o envio do e-mail, realiza toda a tratativa da execução da função de retorno de dados, substituição das marcações e envio de e-mail propriamente dito.

  1. Primeiramente identifique a função (não pode ser static) ou método que irá realizar o processo de envio do e-mail.
Bloco de código
languagec#
themeRDark
titleExemplo
linenumberstrue
//Código acima

// instanciando a classe Gerenciadora de E-mail
oemail := totvs.protheus.health.plan.configurator.EmailConfigurator():New()

// Chamada do método responsável por fazer todo o processamento de envio de E-mail.
// param1 = Cod. do ID do gerenciador,
// param2 = email destinatário,
// param3 = Diretório de anexos que deseja enviar no email (Pode receber um array de diretórios),
// param4 = email que você deseja enviar como cópia
ojson := oemail:SendEmailUsingConfigurator(, "[email protected]",, )

//Código abaixo

Log de erros

Testando funcionalidade conforme HTML e dados criados:

...