Árvore de páginas

Versões comparadas

Chave

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

...

Houve a necessidade de criar uma rotina automatizada para envio de e-mails, garantindo mais eficiência na comunicação e padronização das mensagens enviadas pelo sistema. Durante o processo, identificou-se a importância de permitir a configuração de eventos para disparo automático, assegurando que as notificações sejam enviadas de forma precisa e oportuna.

03. SOLUÇÃO

...

Gerenciador de E-mails

Personalização de Envio de E-mails

...

7 - Utiliza TLS? / Utiliza SSL? - Uma das duas deve estar como Sim para poder fazer a conexão com o SMTP  e deverá ser configurado conforme informações do Passo 6.


Image RemovedImage Added

8 - Assun. Email - Assunto que irá aparecer no E-mail que será enviado.

9 - Func. Dados - Função de dados para extrair informações da rotina para preencher o E-mail conforme tópico Função de Dados Exemplo.10 - 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.

       OBS: Esta função recebe alguns ## que será substituídos por dados dinamicos que serão retornados da Função de Dados.

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

       OBS: 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.

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

       OBS: Esta função não pode ser do tipo static e deverá fazer a chamada da função conforme tópico Função de Configuração


Função de Dados Exemplo:

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

function dados()

	Local cCompHtml   := ""
	oJErrorData         := 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>"


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

Return oJErrorData

...

Bloco de código
languagexml
themeEmacs
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;
        border-radius: 8px 8px 0 0;
      }
      .footer {
        border-radius: 0 0 8px 8px;
        margin-top: 20px;
        font-size: 14px;
      }
      h2 {
        text-align: center;
        color: #333;
      }
      .info {
        padding: 10px 0;
        font-size: 16px;
        color: #555;
      }
      .info strong {
        color: #222;
      }
      table {
        width: 100%;
       .info strong { border-collapse: collapse;
        colormargin-top: #22220px;
      }
      tableth,
      td {
        widthborder: 1px solid 100%#ddd;
        border-collapsepadding: collapse12px;
        margintext-topalign: 20pxleft;
      }
      th,
 {
        background-color: #6c9ebd;
   td {
    color: #ffffff;
   border: 1px solid #ddd;}
        padding: 12px;tr:nth-child(even) {
        textbackground-aligncolor: left#f9f9f9;
      }
      th.company-name {
        background-font-size: 20px;
        color: #6c9ebd#333;
        colortext-align: #ffffffcenter;
      }
      tr:nth-child(even) {margin-bottom: 20px;
        backgroundfont-colorweight: #f9f9f9bold;
      }
    </style>
   .company-name {</head>
  <body>
    <div class="container">
       font-size: 20px;<div class="header">
        color: #333;<h2>Usuario Bloqueado</h2>
      </div>

  text-align: center;
   <p class="info">
    margin-bottom: 20px;
   <strong>Prezado(a):</strong> ##1, portador da matrícula
 font-weight: bold;
      }<strong>##2</strong>
    </style>
  </head>p>

  <body>
    <div<p class="container">info">Esperamos que esta mensagem o(a) encontre bem.</p>
      <div<p class="headerinfo">
        <h2>Usuario Bloqueado</h2>
      </div>

      <p class="info">
Verificamos em nosso sistema que seu plano de saúde foi bloqueado devido
        à inadimplência. Conforme <strong>Prezado(a):</strong> ##1, portador da matrícula
    Resolução Normativa nº 593 da ANS (Agência
     <strong>##2</strong>
   Nacional de  </p>

      <p class="info">Esperamos que esta mensagem o(a) encontre bem.</p>
      <p class="info">
        Verificamos em nosso sistema que seu plano de saúde foi bloqueado devidoSaúde Suplementar), o contrato pode ser suspenso ou
        rescindido caso haja atraso superior a 60 dias, consecutivos ou não.
      </p>
      <p class="info">
        àPara inadimplência.restabelecer Conformeseus aserviços Resoluçãode Normativaassistência à 593saúde, da ANS (Agênciaé necessário
        Nacionalregularizar deos Saúde Suplementar), o contrato pode ser suspenso oudébitos pendentes. Caso já tenha efetuado o pagamento,
        rescindido caso haja atraso superior pedimos a 60gentileza dias,de consecutivosdesconsiderar ouesta nãomensagem.
      </p>
      <p class="info">
         Para restabelecer seus serviços de assistência à saúde, é necessário
  Estamos à disposição para auxiliá-lo(a) no que for necessário.
      </p>

      <table>
      regularizar  os<thead>
 débitos pendentes. Caso  tenha efetuado o pagamento,
  <tr>
      pedimos a gentileza de desconsiderar esta mensagem.<th>Nome</th>
       </p>
     <th>Data <p class="info">
de Inclusão</th>
          Estamos à disposição<th>Data para auxiliá-lo(a) no que for necessário.
de Bloqueio</th>
          </p>tr>

        <table></thead>
        <thead><tbody>
          <tr>##5
        </tbody>
      <th>Nome<</th>table>

      <div class="footer">
      <th>Data de Inclusão</th><p>
          Entre em contato conosco <th>Data de Bloqueio</th>
para mais informações.<br />Email: ##3 |
          Telefone: </tr>##4
        </thead>p>
        <tbody></div>
    </div>
      ##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>


Função de Configuração

Bloco de código
languagec#
themeEmacs
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

Testando funcionalidade conforme HTML e dados criados:

...