SMTPTransporter
La clase SMTPTransporter permite configurar conexiones SMTP y enviar correos electrónicos a través de objetos SMTP transporter.
Objeto SMTP Transporter
Los objetos SMTP Transporter se instancian con el comando SMTP New transporter. Ofrecen las siguientes propiedades y funciones:
| .acceptUnsecureConnection: Boolean True si 4D está autorizado a establecer una conexión no cifrada | 
| .authenticationMode: Text el modo de autenticación utilizado para abrir la sesión en el servidor de correo | 
| .bodyCharset : Text el conjunto de caracteres y la codificación utilizados para la parte del cuerpo del correo electrónico | 
| .checkConnection() : Object verifica la conexión utilizando la información almacenada en el objeto transportador | 
| .connectionTimeOut : Integer el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor | 
| .headerCharset : Text el conjunto de caracteres y la codificación utilizados para el encabezado del correo electrónico | 
| .host : Text el nombre o la dirección IP del servidor local | 
| .keepAlive : Boolean    True si la conexión SMTP debe mantenerse activa hasta que se destruya el objeto transporter | 
| .logFile : Text la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correo | 
| .port : Integer el número de puerto utilizado para las transacciones de correo | 
| .send( mail : Object ) : Object    envía el objeto mail  al servidor SMTP definido en el objeto transportery devuelve un objeto estado | 
| .sendTimeOut : Integer     el tiempo de espera máximo (en segundos) de una llamada a .send( )antes de que se produzca un timeout | 
| .user : Text el nombre del usuario utilizado para la autenticación en el servidor de correo | 
SMTP New transporter
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 18 | Nueva propiedad logFile | 
| 17 R5 | Nuevas propiedades bodyCharset y headerCharset | 
| 17 R4 | Añadidos | 
SMTP New transporter( server : Object ) : 4D.SMTPTransporter
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| server | Object | -> | Información del servidor de correo | 
| Resultado | 4D.SMTPTransporter | <- | objeto SMTP transporter | 
|
Descripción
El comando SMTP New transporter configura una nueva conexión SMTP según el parámetro server y devuelve un nuevo objeto SMTP transporter. El objeto transportador devuelto se utilizará normalmente para el envío de correos electrónicos.
Este comando no abre ninguna conexión con el servidor SMTP. La conexión SMTP se abre realmente cuando la función
.send()se ejecuta.La conexión SMTP se cierra automáticamente:
En el parámetro server, pase un objeto que contenga las siguientes propiedades:
| server | Valor por defecto (si se omite) | 
|---|---|
| .acceptUnsecureConnection: Boolean True si 4D está autorizado a establecer una conexión no cifrada | False | 
| .accessTokenOAuth2: Text .accessTokenOAuth2: Object Cadena de texto u objeto token que representa las credenciales de autorización OAuth2. Sólo se utiliza con OAUTH2 authenticationMode. Si se utilizaaccessTokenOAuth2pero se omiteauthenticationMode, se utiliza el protocolo OAuth 2 (si el servidor lo permite). Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | 
| .authenticationMode: Text el modo de autenticación utilizado para abrir la sesión en el servidor de correo | se utiliza el modo de autenticación más seguro soportado por el servidor | 
| .bodyCharset : Text el conjunto de caracteres y la codificación utilizados para la parte del cuerpo del correo electrónico | mail mode UTF8(US-ASCII_UTF8_QP) | 
| .connectionTimeOut : Integer el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor | 30 | 
| .headerCharset : Text el conjunto de caracteres y la codificación utilizados para el encabezado del correo electrónico | mail mode UTF8(US-ASCII_UTF8_QP) | 
| .host : Text el nombre o la dirección IP del servidor local | mandatory | 
| .keepAlive : Boolean    True si la conexión SMTP debe mantenerse activa hasta que se destruya el objeto transporter | True | 
| .logFile : Text la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correo | ninguno | 
| password: Text Contraseña usuario para la autenticación en el servidor. Cadena de texto u objeto token que representan las credenciales de autorización OAuth 2. | ninguno | 
| .port : Integer el número de puerto utilizado para las transacciones de correo | 587 | 
| .sendTimeOut : Integer     el tiempo de espera máximo (en segundos) de una llamada a .send( )antes de que se produzca un timeout | 100 | 
| .user : Text el nombre del usuario utilizado para la autenticación en el servidor de correo | ninguno | 
Resultado
La función devuelve un SMTP transporter. Todas las propiedades devueltas son de sólo lectura.
Ejemplo
 $server:=New object
 $server.host:="smtp.gmail.com" //Obligatorio
 $server.port:=465
 $server.user:="4D@gmail.com"
 $server.password:="XXXX"
 $server.logFile:="LogTest.txt" //Log extendido a guardar en la carpeta Logs
 var $transporter : 4D.SMTPTransporter
 $transporter:=SMTP New transporter($server)
 $email:=New object
 $email.subject:="my first mail "
 $email.from:="4d@gmail.com"
 $email.to:="4d@4d.com;test@4d.com"
 $email.textBody:="Hello World"
 $email.htmlBody:="<h1>Hello World</h1><h4>'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...'</h4>\
 <p>There are many variations of passages of Lorem Ipsum available."\
 +"The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p>"
 $status:=$transporter.send($email)
 If(Not($status.success))
    ALERT("An error occurred sending the mail: "+$status.message)
 End if
4D.SMTPTransporter.new()
4D.SMTPTransporter.new( server : Object ) : 4D.SMTPTransporter
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| server | Object | -> | Información del servidor de correo | 
| Resultado | 4D.SMTPTransporter | <- | objeto SMTP transporter | 
|
Descripción
La función 4D.SMTPTransporter.new() crea y devuelve un nuevo objeto del tipo 4D.SMTPTransporter. Es idéntico al comando SMTP New transporter (acceso directo).
.acceptUnsecureConnection
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.acceptUnsecureConnection: Boolean
Descripción
La propiedad .acceptUnsecureConnection contiene True si 4D está autorizado a establecer una conexión no cifrada cuando la conexión encriptada no es posible.
Contiene False si no se permiten las conexiones no cifradas, en cuyo caso se devuelve un error cuando no es posible la conexión cifrada.
Los puertos seguros disponibles son:
- 
SMTP - 465: SMTPS
- 587 o 25: SMTP con actualización STARTTLS si lo soporta el servidor.
 
- 
IMAP - 143: Puerto IMAP no encriptado
- 993: IMAP con actualización STARTTLS si lo soporta el servidor
 
- 
POP3 - 110: Puerto POP3 no encriptado
- 995: POP3 con actualización STARTTLS si lo soporta el servidor.
 
.authenticationMode
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.authenticationMode: Text
Descripción
La propiedad .authenticationMode contiene el modo de autenticación utilizado para abrir la sesión en el servidor de correo.
Por defecto, se utiliza el modo más seguro soportado por el servidor.
Los valores posibles son:
| Valor | Constantes | Comentario | 
|---|---|---|
| CRAM-MD5 | SMTP authentication CRAM MD5 | Autenticación utilizando el protocolo CRAM-MD5 | 
| LOGIN | SMTP authentication login | Autenticación utilizando el protocolo LOGIN | 
| OAUTH2 | SMTP authentication OAUTH2 | Autenticación utilizando el protocolo OAuth2 | 
| PLAIN | SMTP authentication plain | Autenticación utilizando el protocolo PLAIN | 
.bodyCharset
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 18 | Soporte de UTF8 base64 | 
| 17 R5 | Añadidos | 
.bodyCharset : Text
Descripción
La propiedad .bodyCharset contiene   el conjunto de caracteres y la codificación utilizados para la parte del cuerpo del correo electrónico.
Valores posibles:
| Constante | Valor | Comentario | 
|---|---|---|
| mail mode ISO2022JP | US-ASCII_ISO-2022-JP_UTF8_QP | 
 | 
| mail mode ISO88591 | ISO-8859-1 | 
 | 
| mail mode UTF8 | US-ASCII_UTF8_QP | headerCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & Quoted-printable (valor por defecto) | 
| mail mode UTF8 in base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & base64 | 
.checkConnection()
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.checkConnection() : Object
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| Resultado | Object | <- | Estado de la conexión del objeto transportador | 
|
Descripción
La función .checkConnection()  verifica la conexión utilizando la información almacenada en el objeto transportador, recrea la conexión si es necesario, y devuelve el estado. Esta función permite verificar que los valores proporcionados por el usuario son válidos y coherentes.
Objeto devuelto
La función envía una solicitud al servidor de correo y devuelve un objeto que describe el estado del correo. Este objeto puede contener las siguientes propiedades:
| Propiedad | Tipo | Descripción | |
|---|---|---|---|
| success | boolean | True si la verificación es exitosa, False en caso contrario | |
| status | number | (sólo SMTP) Código de estado devuelto por el servidor de correo (0 en caso de un problema no relacionado con el procesamiento del correo) | |
| statusText | text | Mensaje de estado devuelto por el servidor de correo, o último error devuelto en la pila de errores de 4D | |
| errors | collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor de correo) | |
| [ ].errCode | number | Código de error 4D | |
| [ ].message | text | Descripción del error 4D | |
| [ ].componentSignature | text | Firma del componente interno que ha devuelto el error | 
Para obtener información sobre los códigos de estado SMTP, consulte esta página.
Ejemplo
 var $pw : Text
 var $options : Object
 var $transporter : 4D.SMTPTransporter
 $options:=New object
 $pw:=Request("Please enter your password:")
 $options.host:="smtp.gmail.com"
 $options.user:="test@gmail.com"
 $options.password:=$pw
 $transporter:=SMTP New transporter($options)
 $status:=$transporter.checkConnection()
 If($status.success=True)
    ALERT("SMTP connection check successful!")
 Else
    ALERT("Error # "+String($status.status)+", "+$status.statusText)
 End if
 Else
    ALERT("Error # "+String($status.status)+", "+$status.statusText)
 End if
.connectionTimeOut
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R5 | Añadidos | 
.connectionTimeOut : Integer
Descripción
La propiedad .connectionTimeOut contiene el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor. Por defecto, si la propiedad no se ha definido en el objeto servidor (utilizado para crear el objeto transportador con SMTP New transporter, POP3 New transporter, o IMAP New transporter), el valor es 30.
.headerCharset
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R5 | Añadidos | 
.headerCharset : Text
Descripción
La propriété .headerCharset contient  el conjunto de caracteres y la codificación utilizados para el encabezado del correo electrónico. El encabezado incluye las siguientes partes del correo electrónico:
- asunto,
- attachment filename(s),
- email name.
Valores posibles:
| Constante | Valor | Comentario | 
|---|---|---|
| mail mode ISO2022JP | US-ASCII_ISO-2022-JP_UTF8_QP | 
 | 
| mail mode ISO88591 | ISO-8859-1 | 
 | 
| mail mode UTF8 | US-ASCII_UTF8_QP | headerCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & Quoted-printable (valor por defecto) | 
| mail mode UTF8 in base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & base64 | 
.host
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R5 | Añadidos | 
.host : Text
Descripción
La propiedad .host contiene el nombre o la dirección IP del servidor local. Se utiliza para las transacciones de correo (SMTP, POP3, IMAP).
.keepAlive
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.keepAlive : Boolean
Descripción
La propiedad .keepAlive contiene True si la conexión SMTP debe mantenerse activa hasta que se destruya el objeto transporter, y Falso en caso contrario. Por defecto, si la propiedad keepAlive no se ha definido en el objeto server (que permite crear el objeto transporter vía el comando SMTP New transporter), es True.
La conexión SMTP se cierra automáticamente:
- cuando el objeto transporterse destruye si la.keepAlivees true,
- después de cada ejecución de la función .send( )si la propiedad.keepAlivees false.
.logFile
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R5 | Añadidos | 
.logFile : Text
Descripción
La propiedad .logFile contiene la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correo. Puede ser relativo (a la carpeta actual Logs) o absoluto.
A diferencia de los archivos de registro clásicos (habilitados mediante el comando SET DATABASE PARAMETER), los archivos de registro extendidos almacenan el contenido MIME de todos los correos enviados y no tienen ningún límite de tamaño. Para más información sobre los archivos de registro extendidos, consulte:
- Conexiones SMTP - 4DSMTPLog.txt
- **Conexiones POP3 ** - 4DSMTPLog.txt
- Conexiones IMAP - 4DIMAPLog.txt
.port
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.port : Integer
Descripción
La propiedad .port contiene  el número de puerto utilizado para las transacciones de correo. Por defecto, si la propiedad port no se ha definido en el objeto server (utilizado para crear el objeto transportador con SMTP New transporter, POP3 New transporter, IMAP New transporter), el puerto utilizado es:
- SMTP - 587
- POP3 - 995
- IMAP - 993
.send()
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R5 | Soporte de contenidos Mime | 
| 17 R4 | Añadidos | 
.send( mail : Object ) : Object
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| Object | -> | Email a enviar | |
| Resultado | Object | <- | Estado SMTP | 
|
Descripción
La función .send() envía el objeto mail  al servidor SMTP definido en el objeto transporter y devuelve un objeto estado.
El objeto
transporterdebe haberse creado ya con la funciónSMTP New transporter.
El método crea la conexión SMTP si no está ya activa. Si la propiedad .keepAlive del objeto transporter es false, la conexión SMTP se cierra automáticamente tras la ejecución del .send(). Para más información, consulte la descripción del comando SMTP New transporter.
En mail, pase un objeto Email válido a enviar. Las propiedades origen (de dónde viene el correo electrónico) y destino (uno o varios destinatarios) deben incluirse, el resto de propiedades son opcionales.
Objeto devuelto
La función devuelve un objeto que describe el estado SMTP de la operación. Este objeto puede contener las siguientes propiedades:
| Propiedad | Tipo | Descripción | 
|---|---|---|
| success | boolean | True si el envío tiene éxito, false en caso contrario | 
| status | number | Código de estado devuelto por el servidor SMTP (0 en caso de un problema no relacionado con el procesamiento del correo) | 
| statusText | text | Mensaje de estado devuelto por el servidor SMTP | 
En caso de un problema no relacionado con el procesamiento SMTP (por ejemplo, si falta una propiedad obligatoria en el correo), 4D genera un error que puede interceptar utilizando un método instalado por el comando ON ERR CALL. Utilice el comando GET LAST ERROR STACK para obtener información sobre el error.
En este caso, el objeto estado resultante contiene los siguientes valores:
| Propiedad | Valor | 
|---|---|
| success | False | 
| status | 0 | 
| statusText | "Failed to send email" | 
.sendTimeOut
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.sendTimeOut : Integer
Descripción
La propiedad .sendTimeOut contiene  el tiempo de espera máximo (en segundos) de una llamada a .send( ) antes de que se produzca un timeout. .
.user
Histórico
| Lanzamiento | Modificaciones | 
|---|---|
| 17 R4 | Añadidos | 
.user : Text
Descripción
La propiedad .user contiene  el nombre del usuario utilizado para la autenticación en el servidor de correo.