Histórico da Página
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 EMAILCONTAS DE E-MAIL | ||||||||||||||||
| Issue : | DSAUBE-26611 |
02.
...
SITUAÇÃO/REQUISITO
Houve a necessidade de Foi necessário criar uma rotina automatizada para o envio de e-mails, garantindo mais eficiência na comunicação e padronização das mensagens enviadas com o objetivo de tornar a comunicação mais eficiente e padronizar as mensagens geradas pelo sistema.
Durante o esse processo, identificou-se a importância de permitir a configuração de eventos para disparo automático, assegurando garantindo que as notificações sejam enviadas de forma precisa e oportunano momento adequado.
03. SOLUÇÃO
Gerenciador de
...
Contas de E-
...
Introdução
O gerenciador de e-mails é uma ferramenta que permite configurar dados de e-mails utilizados como remetentes em diversas rotinas. Ideal para clientes que desejam personalizar e-mails.
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
...
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 complexas.
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.
Personalização do Corpo do E-mail
- Personalize o corpo do e-mail de acordo com diferentes rotinas, utilizando a mesma conta de e-mail ou contas distintas, conforme a necessidade sem precisar alterar código-fonte.
Como Acessar a Rotina
- Para acessar o gerenciador de contas de e-mail, digite no campo que está na parte superior do lado esquerdo a seguinte informação: PLMNG001.
- Voce também pode acessar a rotina navegando pelo menu:Miscelanea > Configurações > Gerenciador de Contas de E-mail.
Tela de configuração de e-mail:
- Título Conf. - Título de identificação do objetivo da configuração.
- Usu. Conta / Senha - Dados do e-mail remetente que irá enviar o e-mail.
- Autentica? - Define se a conta utiliza fator de autenticação. Ao selecionar a opção 1 - Sim, é obrigatório preencher os campos Usuário Aut. e Senha Aut. Caso contrário, o preenchimento desses campos não é necessário.
- 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.
| Nota |
|---|
Em alguns provedores de serviços de e-mail, a senha de acesso à conta e a senha de autenticação para aplicativos externos são diferentes. Além disso, pode ser necessário autorizar o uso da conta por aplicativos de terceiros para o envio de e-mails. Recomenda-se consultar o provedor de e-mail utilizado para verificar se as configurações e credenciais estão corretas. |
- Remetente - Endereço do remetente que será utilizado para o envio do e-mail.
- SMTP - SMTP do E-mail que está sendo configurado como remetente (no exemplo estamos utilizando Gmail).
- Porta - Porta do SMTP.
- Utiliza TLS? / Utiliza SSL? - A configuração pode variar de acordo com o provedor de serviços de e-mail utilizado, consulte o provedor de e-mail utilizado para verificar.
- Assun. E-mail - Assunto que irá aparecer no E-mail que será enviado.
- Corpo E-mail - Dados do HTML e CSS para personalizar o corpo do e-mail que será enviado. Exemplo disponível no tópico Exemplo de Código HTML Para o Corpo do E-mail.
Exemplo de Código HTML Para o Corpo do E-mail
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
<!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 |
Tela de configuração de e-mail:
1 - Título Conf. - Título de identificação do Gerenciador 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.
...
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.
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 (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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
#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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <style> body { fontmax-familywidth: Arial, sans-serif600px; margin: 40px 0auto; padding: 020px; backgroundborder-colorradius: #f4f4f48px; } background-color: #ffffff; .container { box-shadow: 0 4px 8px rgba(0, 0, max-width: 600px0, 0.05); } margin: 40px auto; .header, padding: 20px;.footer { borderbackground-radiuscolor: 8px#6c9ebd; background-color: #ffffff; boxtext-shadow: 0 4px 8px rgba(0, 0, 0, 0.05)align: center; padding: 10px; } border-radius: 8px 8px 0 0; .header,} .footer { backgroundborder-color: #6c9ebdradius: 0 0 8px 8px; colormargin-top: #ffffff20px; textfont-alignsize: center14px; } padding:h2 10px;{ bordertext-radius: 8px 8px 0 0align: center; color: #333; } .footerinfo { border-radiuspadding: 010px 0 8px 8px; marginfont-topsize: 20px16px; font-sizecolor: 14px#555; } h2 { text-align: center;.info strong { color: #333#222; } .infotable { paddingwidth: 10px 0100%; fontborder-sizecollapse: 16pxcollapse; colormargin-top: #55520px; } th, .info strongtd { colorborder: 1px solid #222#ddd; } padding: 12px; table { text-align: left; width: 100%; } border-collapse: collapse;th { marginbackground-topcolor: 20px#6c9ebd; } color: #ffffff; th,} tdtr:nth-child(even) { borderbackground-color: 1px solid #ddd#f9f9f9; } padding: 12px; .company-name { textfont-alignsize: left20px; } color: #333; th {text-align: center; backgroundmargin-colorbottom: #6c9ebd20px; colorfont-weight: #ffffffbold; } tr:nth-child(even) {</style> </head> <body> <div background-color: #f9f9f9; class="container"> }<div class="header"> .company-name { <h2>Usuario Bloqueado</h2> font-size: 20px;</div> color: #333;<p class="info"> text-align: center; <strong>Prezado(a):</strong> ##1, portador da matrícula margin-bottom: 20px; <strong>##2</strong> font-weight: bold; </p> } </style> </head> <body> <p class="info">Esperamos que esta mensagem o(a) encontre bem.</p> <div<p class="containerinfo"> <div class="header"> Verificamos em nosso sistema que seu plano <h2>Usuario Bloqueado</h2> de saúde foi bloqueado devido </div> à <p class="info"> <strong>Prezado(a):</strong> ##1, portador da matrícula inadimplência. Conforme a Resolução Normativa nº 593 da ANS (Agência Nacional de Saúde <strong>##2</strong> </p> Suplementar), o contrato pode ser suspenso ou <p class="info">Esperamos que esta mensagem o(a) encontre bem.rescindido caso haja atraso superior a 60 dias, consecutivos ou não. </p> <p class="info"> VerificamosPara emrestabelecer nossoseus sistemaserviços quede seuassistência planoà de saúde, foié bloqueado devidonecessário àregularizar inadimplência.os Conformedébitos apendentes. ResoluçãoCaso Normativajá nºtenha 593efetuado da ANS (Agênciao pagamento, Nacionalpedimos dea Saúdegentileza Suplementar),de odesconsiderar contratoesta podemensagem. ser suspenso ou </p> rescindido caso haja atraso superior a 60 dias, consecutivos ou não<p class="info"> Estamos à disposição para auxiliá-lo(a) no que for necessário. </p> <p class="info"><table> Para<thead> restabelecer seus serviços de assistência à saúde, é necessário<tr> regularizar os débitos pendentes. Caso já tenha efetuado o pagamento, <th>Nome</th> <th>Data de Inclusão</th> pedimos a gentileza<th>Data de desconsiderar esta mensagem. Bloqueio</th> </p>tr> <p class="info"> </thead> <tbody> Estamos à disposição para auxiliá-lo(a) no que for necessário. ##5 </tbody> </p>table> <table><div class="footer"> <thead><p> <tr> Entre em contato conosco para mais informações.<br />Email: ##3 | <th>Nome</th> Telefone: ##4 <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> |
Função de Configuração
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
//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 |
...
</p>
</div>
</div>
</body>
</html> |
- 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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "Totvs.ch"
function dados()
Local cCompHtml as character
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 |
- Funcao Conf. - Campo destinado ao nome da função ou método que utilizará a configuração de e-mail. Cada função ou método deve ser inserido em uma nova linha no grid, permitindo o uso compartilhado da configuração por diferentes pontos do sistema.
- 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 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
|
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| cConfigCode | caractere | Código sequencial criado pelo gerenciador de contas de e-mail no campo ID Config. | |
| cRecipient | caractere | Endereço de e-mail do destinatário que receberá o e-mail. | X |
| aAttachments | Array | Array contendo em cada posição o caminho completo do arquivo com a extensão que será enviado junto ao e-mail. | |
| cCopOcult | caractere | Endereços de e-mail dos destinatários que receberão a mensagem como cópia oculta (CCO), separados por vírgula. |
Retorno
Nome | Tipo | Descrição |
|---|---|---|
oJSendmail | json | Retorna um objeto do tipo json com dois atributos. oJSendmail["sendMail"] - Retorna .T. caso o e-mail tenha sido enviado com sucesso, ou retorna .F. caso tenha ocorrido algum erro no envio. oJSendmail["message"] - Mensagem de sucesso ou de erro. |
| Nota |
|---|
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 e dificulta a 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. |
Função de Configuração
Primeiro identifique a função (não pode ser static) ou método que irá realizar o processo de envio do e-mail.
No exemplo abaixo a função de usuário MailTste irá utilizar uma das configurações do gerenciador de contas de e-mail para enviar o e-mail.
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
User Function MailTste()
Local oemail as object
Local ojson as object
// 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 = ID do gerenciador
// param2 = e-mail destinatário
// param3 = Diretório de anexos que deseja enviar no e-mail (Pode receber um array de diretórios)
// param4 = e-mail que você deseja enviar como cópia
ojson := oemail:SendEmailUsingManager(NIL,"[email protected]")
If ojson["sendMail"] //.T. = enviado com sucesso
FWAlertSuccess(ojson["message"])
Else
FWAlertError(ojson["message"])
EndIf
Return |
Após a implementação da classe de envio de e-mail, acesse o Gerenciador de Contas de E-mail, localize a configuração que será utilizada e insira o nome da função no campo "Função Conf." do grid que no caso será U_MAILTSTE. É possível adicionar quantas linhas forem necessárias para registrar diferentes funções ou métodos que utilizarão essa configuração.
Log de Erros
A maioria dos erros relacionados ao envio de e-mails utilizando o Gerenciador de Contas de E-mail pode ser analisada em maior detalhe no arquivo LogConfigEmail.log, localizado no diretório LOGPLS, dentro da pasta PROTHEUS_DATA.
Vídeo com o resultado das configurações acima:
| View file | ||||
|---|---|---|---|---|
|
04. DEMAIS INFORMAÇÕES
Atualização do Dicionário de Dados
inclusão de itens da tabela BZD no Arquivo SX3:
...
| Tabela | BZF |
| Modo | Compartilhado |
| Modo Unidade | Exclusivo |
| Modo Empresa | Exclusivo |
| Chave Única | BZF_FILIAL + BZF_IDBZD + BZF_FUNCFG |
| Nome | Funcoes do Config. de email |
Card documentos Informacao As alterações de dicionário referente a essa implementação estarão disponíveis através de pacote de expedição contínua do plano de saúde com data igual ou superior
| Informacao | As alterações de dicionário referente a essa implementação estarão disponíveis através de pacote de expedição contínua do plano de saúde com data igual ou superior |
|---|
...
30/05/2025. Titulo Importante
| 30/05/2025. | |
| Titulo | Importante |
|---|
05. ASSUNTOS RELACIONADOS
Não se aplica
| Templatedocumentos |
|---|
...


