Pular para o conteúdo principal

MENVMAIL.PRW

Envio de e-mail assíncrono Protheus

Dados da Customização​


Analista: Jonathan Torioni


Especificação da Customização​


Está customização tem o objetivo de realizar o envio de e-mails assíncronos.

Inicialmente está customização foi desenvolvida para destravar as liberações, visto os problemas recorrentes de lentidão na plataforma G-Suite (Google - Gmail).

Todos os e-mail serão enviados via AWS, visando ter mais simplicidade nos envios e nas autenticações das contas. Esta decisão foi tomada, pois após algumas autenticações com a Google - Gmail, a plataforma começou a bloquear os "Aplicativos menos seguros".


Especificações das Funções e Rotinas​


U_MENVMAIL(_aParam) - Utilizada para realizar a integração com o envio de e-mail assíncrono. Esta função é responsável por pegar as informações de (Origem, Destino, Assunto, Corpo do e-mail e Anexos).

Esta função também é responsável por criptografar os dados da Conta, Senha e Servidor SMTP do AWS e gravar os dados na tabela PCM.

U_MPRCMAIL() - Função responsável pela separação do recnos da tabela PCM que contenham a coluna PCM_STATUS em 1 ou 4.

Está função será configurada no JOB com um refresh rate de um minuto.

U_MSEND(_cEmp,_cFil, _aRecno) - Função responsável pelo envio de e-mail dos recnos passados pela função U_MPRCMAIL()

Observações

As funções U_MPRCMAIL e U_MSEND são feitas exclusivamente para execução via JOB.


Especificações de tabelas/campos/parâmetros​


AliasCampoTipoTamanhoDecimalMascaraNomeDescrição
PCMPCM_EMPORIC2@!EMP ORIGEMPRESA ORIGEM
PCMPCM_SMTPPWC254@!SENHA SMTPSENHA SMTP
PCMPCM_SMTPSVC254@!SERVER SMTPSERVER SMTP
PCMPCM_SMTPCTC254@!CONTA SMTPCONTA SMTP
PCMPCM_STATUSC1@!STATUS ENVSTATUS ENVIO
PCMPCM_FROMC100@!FROMFROM
PCMPCM_DESTM10@MDESTINATARIODESTINATARIO
PCMPCM_ASSUNC254@!ASSUNTOASSUNTO
PCMPCM_BODYM10@MBODYBODY
PCMPCM_ATTACC254@!ANEXOANEXO
PCMPCM_CUSRIDC6@!ID USUARIOID USUARIO
PCMPCM_RC4C99@!CHAVE RC4CHAVE DECRIP RC4
PCMPCM_DTIND8@DDATA INCDATA INCLUSAO DO ENVIO
PCMPCM_HRINC10@!HORA INCHORA INCLUSAO
PCMPCM_DTOUTD8@DDATA SAIDADATA DE SAIDA
PCMPCM_HROUTC10@!HORA SAIDAHORA SAIDA
PCMPCM_MSERRC99@!MSG ERROMENSAGEM DE ERRO
PCMPCM_ROTINAC50@!ROTINAROTINA
A tabela PCM deve ser criada com compartilhamento entre filiais, empresas e grupos com o nome PCMG01.
Após a criação da tabela, deve-se rodar a criação de campos utilizando a ferramenta MDIC importando o arquivos schema_campos_pcm.txt na pasta \system.

A tabela PCM deve ser importada na SX2 de todas as empresas, juntamente com a tabela SIX.

Criar o parâmetro ES_MAILASS na tabela SX6 de todas as empresas da producao27 e producaosk. Este parâmetro será responsável por definir se o envio de e-mail será de forma assíncrona ou da forma tradicional. Ao criar este parâmetro, deixe o conteúdo como .F. para que após a implantação, possamos controlar o envio por empresas e testar a estabilidade da aplicação.


Critérios para Validação​


Efetivar a liberação e verificar se as informações do e-mail em questão se encontram na tabela PCM com o Status 1.

Após isso rodar a função U_MPRCMAIL() e verificar se o status altera de 1 para 6.

Status:

1 - EMAIL RECEBIDO 4 - EMAIL NÃO TRANSMITIDO 6 - EMAIL ENVIADO

Para os e-mails com status 4, é informada o motivo da falha na transmisão na coluna PCM_MSERR. Caso o envio de e-mail esteja com o status 4, verifique se dentro do appserver.ini consta a Session [MAIL].

[MAIL] AUTHLOGIN = 1 AUTHNTLM = 1 AUTHPLAIN = 1 Documentação oficial: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360016727371-MP-ADVPL-ERRO-THE-USER-COMMAND-FAILED