Histórico da Página
...
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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
<!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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
#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 { 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 nº 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 language c# theme RDark title Exemplo linenumbers true #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.
- 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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
//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:
...