Registre sus conversaciones SMTP

Traducido automáticamente de Deepl

Como se prometió en un post anterior, cada versión R incluye más avances relacionados con la funcionalidad del correo electrónico, desbloqueando su poder oculto.

4D v17 R5 proporciona una nueva e interesante característica para los registros de correo electrónico. A veces, durante el desarrollo, todo funciona bien, pero cuando se despliega al cliente, hay un problema de entrega de correos electrónicos. Descubrir dónde se produce el fallo puede ser difícil, ya que la comunicación está encriptada y a menudo no se tiene acceso a los archivos de registro del servidor SMTP. Es muy probable que el problema esté relacionado con tu servidor SMTP, pero ¿cómo puedes estar seguro? Simplemente inicie el registro SMTP en su aplicación. Este registro contiene una relación de todas las acciones realizadas, incluidas las que detienen la conexión. Y lo que es mejor, este registro muestra las comunicaciones con el servidor SMTP en texto plano y no cifrado, lo que facilita su análisis.

El comando SMTP New transporter crea una conexión con un servidor SMTP (como exchange o gmail) y registra todas las comunicaciones entre éste y el cliente.

Activar el registro de transacciones SMTP

Para activar el registro de comunicaciones SMTP en su base de datos para todos los correos electrónicos enviados, puede utilizar el siguiente código:

SET DATABASE PARAMETER(SMTP Log, 1)

Para ejecutar fácilmente un registro SMTP en el servidor, haga clic en el botón «Start Request and Debug Logs» en la ventana de administración de 4D Server:

Todas las transacciones SMTP que se ejecuten en 4D Server se registrarán automáticamente.

Registrar una transacción específica

Si necesitas registrar una transacción específica (durante la depuración, por ejemplo), puedes utilizar la propiedad logFile del objeto 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\SMTPLog.txt"
$transporter :=SMTP New transporter($server)

Ejemplo de archivo de registro SMTP

Cada línea del registro contiene cinco elementos de información:

  • Contador
  • Fecha y hora
  • ID del proceso
  • ID de proceso único
  • Declaración de envío del cliente («C >») o la respuesta del servidor («S <«) con el código de respuesta y la descripción devuelta.

Este es el resultado de intentar conectarse con una contraseña incorrecta:

1 2019-02-06T15:03:11.586 5 7 ### SMTP Conectado a 'smtp.gmail.com' en el puerto 465. (asegurado)
2 2019-02-06T15:03:12.142 5 7 S < "220 smtp.gmail.com ESMTP y139sm19463388wmd.22 - gsmtp"
3 2019-02-06T15:03:12.143 5 7 C > "EHLO [192.168.18.9]"
4 2019-02-06T15:03:12.154 5 7 S < "250-smtp.gmail.com a su servicio, [195.68.52.79]"
5 2019-02-06T15:03:12.154 5 7 S < "250-SIZE 35882577"
6 2019-02-06T15:03:12.154 5 7 S < "250-8BITMIME"
7 2019-02-06T15:03:12.154 5 7 S < "250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
8 2019-02-06T15:03:12.154 5 7 S < "250-ENHANCEDSTATUSCODES"
9 2019-02-06T15:03:12.161 5 7 S < "250-PIPELINING"
10 2019-02-06T15:03:12.161 5 7 S < "250-CHUNKING"
11 2019-02-06T15:03:12.161 5 7 S < "250 SMTPUTF8"
12 2019-02-06T15:03:
12.162 5 7 C > "AUTH PLAIN"
13 2019-02-06T15:03:12.168 5 7 S < "334 "
14 2019-02-06T15:03:12.168 5 7 C > "********************************"
15 2019-02-06T15:03:12.234 5 7 S < "535-5.7.8 Nombre de usuario y contraseña no aceptados. Más información en"
16 2019-02-06T15:03:12.234 5 7 S < "535 5.7.8 https://support.google.com/mail/?p=BadCredentials y139sm19463388wmd.22 - gsmtp"
17 2019-02-06T15:03:12.235 5 7 C > "QUIT"
18 2019-02-06T15:03:12.242 5 7 S < "221 2.0.0 cerrando conexión y139sm19463388wmd.22 - gsmtp"
19 2019-02-06T15:03:12.242 5 7 ### Conexión SMTP cerrada67 2019-01-10T11:00:08.653 -5 ### Conexión SMTP cerrada

Echemos un vistazo más de cerca a lo que sucede en el registro:

  • Línea 1: Se abre un canal de comunicación con el servidor SMTP a través del puerto 465. El cifrado TLS se inicia automáticamente y la comunicación es segura.
  • Línea 3: El cliente envía el comando EHLO para iniciar la conversación SMTP.
  • Línea 4a 11: El servidor devuelve algunos elementos de configuración, incluida la lista de métodos de autenticación admitidos(línea 7).
  • Línea 12: El cliente envía el tipo de autenticación.
  • Línea 14: El cliente envía el nombre de usuario y la contraseña. Nunca aparecen en texto plano en el registro, se sustituyen por «*».
  • Líneas15 y 16: El servidor devuelve el error 535, la autenticación ha fallado.
  • Línea 17: El cliente envía el comando «QUIT» para cerrar la conexión con el servidor.

Como puedes ver con este ejemplo, ahora es fácil solucionar los problemas de comunicación.

¡Feliz registro!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.