Registe as suas conversas SMTP

Tradução automática de Deepl

Como prometido num post anterior, cada lançamento R inclui mais avanços relacionados com a funcionalidade do correio electrónico, desbloqueando o seu poder oculto.

4D v17 R5 fornece uma nova funcionalidade interessante para os registos de correio electrónico. Por vezes, durante o desenvolvimento tudo funciona bem, mas quando se envia para o cliente, há um problema na entrega de emails. Descobrir onde ocorre a falha pode ser difícil, uma vez que a comunicação é encriptada e muitas vezes não se tem acesso aos ficheiros de registo do servidor SMTP. O problema está muito provavelmente relacionado com o seu servidor SMTP, mas como pode ter a certeza? Basta iniciar o log SMTP na sua aplicação! Este registo contém um registo de todas as acções realizadas, incluindo as que interrompem a ligação. Melhor ainda, este registo mostra as comunicações com o servidor SMTP em texto simples e não encriptado, tornando mais fácil a sua análise.

O SMTP New transporter cria uma ligação com um servidor SMTP (tal como troca ou gmail) e regista todas as comunicações entre ele e o cliente.

Activar o registo da transacção SMTP

Para activar o registo de comunicação SMTP na sua base de dados para todos os e-mails enviados, pode usar o seguinte código:

SET DATABASE PARAMETER(SMTP Log, 1)

Para executar facilmente um log SMTP no servidor, clique no botão “Start Request and Debug Logs” na janela de Administração do Servidor 4D:

Todas as transacções SMTP a correr no Servidor 4D serão automaticamente registadas.

Registar uma transacção específica

Se precisar de registar uma transacção específica (durante a depuração, por exemplo), pode utilizar o comando logFile propriedade do objecto SMTP:

$server.host:="yoursmtpserver.com"
$server .user:="login"
$server .password:="psw"
// Enter the path of the log file you want to create
$server .logFile:="C:\tmp\tmp\tmpLog.txt"
$transporter :=SMTP New transporter($server)

Exemplo de ficheiro de registo SMTP

Cada linha do registo contém cinco peças de informação:

  • Contador
  • Data e hora
  • Identificação do processo
  • Identificação exclusiva do processo
  • Envio de declaração do cliente (“C >”) ou a resposta do servidor (“S <“) com o código de resposta e a descrição devolvida.

Eis o resultado da tentativa de ligação com uma palavra-passe incorrecta:

12019-02-06T15:03:11.58657## SMTP Ligado a 'smtp.gmail.com' na porta 465. (protegido)
22019-02-06T15:03:12.14257S < "220 smtp.gmail.com ESMTP y139sm19463388wmd.22 - gsmtp"
32019-02-06T15:03:12.14357C > "EHLO [192.168.18.9]"
42019-02-06T15:03:12.15457S < "250-smtp.gmail.com ao seu serviço, [195.68.52.79]"
52019-02-06T15:03:12.15457S < "250-SIZE 35882577"
62019-02-06T15:03:12.15457S < "250-8BITMIME"
72019-02-06T15:03:12.15457S < "250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
82019-02-06T15:03:12.15457S < "250-ENHANCEDSTATUSCODES"
92019-02-06T15:03:12.16157S < "250-PIPELINING"
102019-02-06T15:03:12.16157S < "250-CHUNKING"
112019-02-06T15:03:12.16157S < "250 SMTPUTF8"
122019-02-06T15:03:12.16257C > "AUTH PLAIN"
132019-02-06T15:03:12.16857S < "334 "
142019-02-06T15:03:12.16857C > "********************************"
152019-02-06T15:03:12.23457S < "535-5.7.8 Nome de utilizador e palavra-passe não aceites. Saiba mais em"
162019-02-06T15:03:12.23457S < "535 5.7.8 y139sm19463388wmd.22 - gsmtp"
172019-02-06T15:03:12.23557C > "QUIT"
182019-02-06T15:03:12.24257S < "221 2.0.0.0 ligação de fecho y139sm19463388wmd.22 - gsmtp"
192019-02-06T15:03:12.24257### SMTP Ligação fechada672019-01-10T11:00:08.653-5#### SMTP Ligação fechada

Vamos ver mais de perto o que está a acontecer no diário de bordo:

  • Linha 1: Abrir um canal de comunicação para o servidor SMTP através da porta 465. A encriptação TLS é iniciada automaticamente e a comunicação é assegurada.
  • Linha 3: Cliente envia o comando EHLO para iniciar a conversa SMTP.
  • Linha 4 a 11: O servidor devolve alguns elementos de configuração, incluindo a lista de métodos de autenticação suportados(linha 7).
  • Linha 12: O cliente envia o tipo de autenticação.
  • Linha 14: Cliente envia o login e a palavra-chave. Nunca aparecem em texto simples no registo, são substituídos por “*”s.
  • Linha 15 e 16: O servidor devolve o erro 535, a autenticação falhou.
  • Linha 17: Cliente envia o comando “QUIT” para fechar a ligação com o servidor.

Como se pode ver com este exemplo, agora é fácil resolver problemas de comunicação.

Feliz registo!

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.