01. DADOS GERAIS

Produto:

TOTVS Saúde Planos

Linha de Produto:

Linha Protheus 

Segmento:

Saúde

Módulo:GESTÃO DE CONTRATOS / FAMÍLIAS
Função:GERENCIADOR DE EMAIL
Issue :DSAUBE-26611


02. 
SITUAÇÃO/REQUISITO

Foi necessário criar uma rotina automatizada para o envio de e-mails, com o objetivo de tornar a comunicação mais eficiente e padronizar as mensagens geradas pelo sistema.

Durante esse processo, identificou-se a importância de permitir a configuração de eventos para disparo automático, garantindo que as notificações sejam enviadas de forma precisa e no momento adequado.

03. SOLUÇÃO

Gerenciador de Contas de E-mail

O gerenciador de contas de e-mail foi desenvolvido para otimizar e automatizar o envio de e-mails de forma rápida, segura e personalizada.

Introdução

Com uma interface intuitiva, o gerenciador de contas de e-mail permite a personalização de mensagens com campos dinâmicos. Além disso, pode ser utilizado em customizações das mais simples as mais comprexas.

O gerenciador de contas de e-mail também prioriza a segurança, utilizando protocolos de envio confiáveis (como SMTP com autenticação TLS).

Funcionalidades

Entre as principais funcionalidades do gerenciado de e-mails, destacam-se:

Layouts em HTML e CSS

Criação de layouts específicos em HTML e CSS para cada configuração.

Configuração de Remetentes

Permite configurar diferentes remetentes para rotinas diferentes ou para uma mesma rotina levando em consideração a operadora, empresa, contrato e subcontrato.

Personalização do Corpo do E-mail

Personaliza o envio de e-mails para diferentes rotinas ou para uma mesma rotina com base na operadora, empresa, contrato e subcontrato.

Tela de configuração de e-mail:

1 - Título Conf. - Título de identificação do gerenciador de contas de e-mail.

2 - Usu. Conta / Senha - Dados do e-mail remetente que irá enviar o E-mail.

3 - Autentica? - ComboBox que se marcado com Sim  deverá ter os dados do Passo 4 como obrigatório.

4 - Usuario Aut. / Senha Aut. - Usuário de e-mail com dados de autenticação e token de autenticação para liberar o envio de E-mail.


5 - Remetente - Remetente que será enviado o E-mail.

6 - SMTP / Porta - SMTP do E-mail que está sendo configurado como Rementente (No exemplo estamos utilizando Gmail) e a Porta que deve ser usada conforme seleção do Passo 7 (No exemplo, utilizamos a porta SSL).

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.


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

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.

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

<!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%;
        border-collapse: collapse;
        margin-top: 20px;
      }
      th,
      td {
        border: 1px solid #ddd;
        padding: 12px;
        text-align: left;
      }
      th {
        background-color: #6c9ebd;
        color: #ffffff;
      }
      tr:nth-child(even) {
        background-color: #f9f9f9;
      }
      .company-name {
        font-size: 20px;
        color: #333;
        text-align: center;
        margin-bottom: 20px;
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h2>Usuario Bloqueado</h2>
      </div>

      <p class="info">
        <strong>Prezado(a):</strong> ##1, portador da matrícula
        <strong>##2</strong>
      </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 devido
        à inadimplência. Conforme a Resolução Normativa nº 593 da ANS (Agência
        Nacional de Saú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 restabelecer seus serviços de assistência à saúde, é necessário
        regularizar os débitos pendentes. Caso já tenha efetuado o pagamento,
        pedimos a gentileza de desconsiderar esta mensagem.
      </p>
      <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>


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.

11 - Funcao Conf. - Função  (No Exemplo está sendo chamado ao Bloquear um Beneficiário).

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

Após configurar uma conta no Gerenciador de Contas de E-mail, essa configuração poderá ser utilizada para o envio de mensagens, considerando os dados do remetente e o layout em HTML definidos. Para isso, basta utilizar o método SendEmailUsingConfigurator da classe EmailConfigurator. Com apenas alguns parâmetros, a classe identifica automaticamente a configuração apropriada, executa a função de retorno de dados, realiza a substituição das marcações no conteúdo e efetua o envio do e-mail.

Sintaxe

EmailManager:SendEmailUsingManager(< cConfigCode >, < cRecipient >, < aAttachments >, < cCopOcult >)

Parâmetros

Nome

Tipo

Descrição

Obrigatório

cConfigCodecaractereCódigo sequencial criado pelo gerenciador de contas de e-mail no campo ID Config. 
cRecipientcaractereEndereço de e-mail do destinatário que receberá o e-mail.X
aAttachmentsArrayArray contendo em cada posição o caminho completo do arquivo com a extenção que será enviado junto ao e-mail.
cCopOcultcaractere

Endereços de e-mail dos destinatários que receberão a mensagem como cópia oculta (CCO), separados por vírgula.


    O parâmetro cConfigCode deve ser utilizado apenas quando for necessário informar diretamente o código de uma configuração de e-mail, dispensando o preenchimento do campo "Função Conf." na configuração. Nesse caso, não é preciso vincular a função ou método de origem ao envio do e-mail. No entanto, vale destacar que, ao utilizar esse parâmetro, qualquer alteração de layout exigirá a modificação direta no código-fonte, o que reduz a flexibilidade da manutenção. Por esse motivo, recomenda-se evitar o uso do parâmetro cConfigCode e, sempre que possível, preencher o campo "Função Conf." com o nome da função responsável pelo envio do e-mail.


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

// instanciando a classe Gerenciadora de E-mail
oemail := totvs.protheus.health.plan.manager.EmailManager():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:SendEmailUsingManager(, "[email protected]",, )

Log de erros

Testando funcionalidade conforme HTML e dados criados:

04. DEMAIS INFORMAÇÕES

Atualização do Dicionário de Dados

inclusão de itens da tabela BZD no Arquivo SX3:

Campo

Tipo

Tamanho

Decimal

Titulo

Descrição

Relação

Usado

Obrigatório

Exibe Browser

Visual

Contexto

VLDUSR

CBox

Help

BZD_FILIALCaracter80

Filial    

Filial do Sistema
NãoNãoNão



Filial do Sistema  

BZD_IDCaracter60

ID Config.

ID Config.NextNumero("BZD", 1, "BZD_ID", .T.)SimSimNãoVisualReal

ID do gerenciador

BZD_TITCFGCaracter1000

Titulo Conf.  

Titulo da configuracao
SimSimSimAlterarReal

Titulo da configuracao

BZD_REMTNTCaracter2540

Remetente

Remetente
SimSimSimAlterarRealVAZIO() .OR. ValidMail(M->BZD_REMTNT)

Remetente

BZD_SMTPCaracter2540

SMTP

SMTP
SimSimSimAlterarReal

SMTP

BZD_USUARICaracter2540

Usu. Conta

Usuario
SimSimNãoAlterarRealVAZIO() .OR. ValidMail(M->BZD_USUARIO)

Usuario

BZD_SENHACaracter2540

Senha

Senha
SimSimNãoAlterarReal

Senha

BZD_PORTANúmeral60

Porta

Porta
SimSimSimAlterarReal

Porta

BZD_AUTENTCaracter10

Autentica?

Autentica?"1"SimSimNãoAlterarReal
0=Nao;1=Sim

Autentica?

BZD_USUAUTCaracter2540

Usuario Aut.

Usuario Aut.
SimNãoNãoAlterarRealVAZIO() .OR. ValidMail(M->BZD_USUAUT)

Usuario Autenticador

BZD_SENAUTCaracter2540

Senha Aut.

Senha Aut.
SimNãoNãoAlterarReal

Senha Aut.

BZD_ASSUNTCaracter2540

Assun. Email

Assun. Email
SimSimNãoAlterarReal

Assun. Email

BZD_FUNCAOCaracter200

Func. Dados

Func. Dados
SimNãoNãoAlterarReal

Func. Dados

BZD_HTMLMemo100

Corpo E-mail

Corpo E-mail
SimSimNãoAlterarReal

Corpo E-mail

BZD_USERGACaracter170

Log de Alter

Log de Alteracao
NãoNãoNãoVisualReal

Log de Alteração

BZD_USERGICaracter170

Log de Inclu

Log de Inclusao
NãoNãoNãoVisualReal


BZD_TLSCaracter10

Utiliza TLS?

Utiliza TLS?
SimSimNãoAlterarReal
0=Nao;1=Sim

Utiliza TLS?

BZD_SSLCaracter10

Utiliza SSL?

Utiliza SSL?
SimSimNãoAlterarReal
0=Nao;1=Sim

Utiliza SSL?


inclusão de itens da tabela BZD no Arquivo SX3:

Campo

Tipo

Tamanho

Decimal

Titulo

Descrição

Relação

Usado

Obrigatório

Exibe Browser

Visual

Contexto

Help

BZF_FILIALCaracter80

Filial    

Filial do Sistema
NãoNãoNão

Filial do Sistema  

BZF_IDBZDCaracter60

ID cabecalho

ID cabecalhoM->BZD_IDSimNãoNãoVisualReal

ID do cabeçalho

BZF_IDCaracter60

ID registro 

ID registro
SimNãoNãoVisualReal

ID do registro

BZF_FUNCFGCaracter300

Funcao Conf.

Funcao de Configuracao
SimNãoNãoAlterarReal

Função de Configuração

BZF_USERGICaracter170

Log de Inclu

Log de Inclusao
NãoNãoNãoVisualReal

Log de Inclusão

BZF_USERGACaracter170

Log de Alter

Log de Alteracao
NãoNãoNãoVisualReal

Log de Alteração


Inclusão no Arquivo SIX:

Índice

Ordem

Chave

Descrição

BZD1BZD_FILIAL + BZD_IDFilial + ID
BZF1BZF_FILIAL + BZF_FUNCFGFilial + funcao em execucao

Inclusões na tabela SX2 (Tabela):

TabelaBZD
ModoCompartilhado
Modo UnidadeExclusivo
Modo EmpresaExclusivo
Chave ÚnicaBZD_FILIAL + BZD_ID
Nome 

Cabecalho do Config. de email

TabelaBZF
ModoCompartilhado
Modo UnidadeExclusivo
Modo EmpresaExclusivo
Chave ÚnicaBZF_FILIAL + BZF_IDBZD + BZF_FUNCFG
Nome 

Funcoes do Config. de email

05. ASSUNTOS RELACIONADOS

        Não se aplica