SMTPTransporter
The SMTPTransporter
class allows you to configure SMTP connections and send emails through SMTP transporter objects.
SMTP Transporter object
SMTP Transporter objects are instantiated with the SMTP New transporter command. They provide the following properties and functions:
.acceptUnsecureConnection : Boolean True si se permite a 4D 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 comprueba la conexión utilizando la información almacenada en el objeto transporter |
.connectionTimeOut : Integer el tiempo máximo de espera (en segundos) permitido 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 permanecer activa hasta que el objeto sea destruido |
.logFile : Text la ruta del archivo de registro extendido definido (si existe) 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 object al servidor SMTP definido en el objeto |
.sendTimeOut : Integer el tiempo máximo de espera (en segundos) de una llamada a |
.user : Text el nombre de usuario utilizado para la autenticación en el servidor de correo |
SMTP New transporter
Histórico
Versión | Modificaciones |
---|---|
v18 | Nueva propiedad logFile |
v17 R5 | New bodyCharset and headerCharset properties |
v17 R4 | Añadidos |
SMTP New transporter( server : Object ) : 4D.SMTPTransporter
Parámetros | Tipo | Descripción | |
---|---|---|---|
server | Objeto | -> | 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 en función del 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.
This command does not open any connection to the SMTP server. The SMTP connection is actually opened when the
.send()
function is executed.The SMTP connection is automatically closed: * when the transporter object is destroyed if the
keepAlive
property is true (default), * after each.send( )
function execution if thekeepAlive
property is set to false.
En el parámetro server, pase un objeto que contenga las siguientes propiedades:
server | Valor por defecto (si se omite) |
---|---|
.acceptUnsecureConnection : Boolean True si se permite a 4D establecer una conexión no cifrada | False |
.accessTokenOAuth2: Text .accessTokenOAuth2: Object Text string or token object representing OAuth2 authorization credentials. Used only with OAUTH2 | ninguno |
.authenticationMode : Text el modo de autenticación utilizado para abrir la sesión en el servidor de correo | the most secure authentication mode supported by the server is used |
.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 máximo de espera (en segundos) permitido 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 | obligatorio |
.keepAlive : Boolean True si la conexión SMTP debe permanecer activa hasta que el objeto sea destruido | True |
.logFile : Text la ruta del archivo de registro extendido definido (si existe) para la conexión de correo | ninguno |
password : Text Contraseña del usuario para la autenticación en el servidor. Not returned in SMTP transporter object. | ninguno |
.port : Integer el número de puerto utilizado para las transacciones de correo | 587 |
.sendTimeOut : Integer el tiempo máximo de espera (en segundos) de una llamada a | 100 |
.user : Text el nombre de 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" //Mandatory
$server.port:=465
$server.user:="4D@gmail.com"
$server.password:="XXXX"
$server.logFile:="LogTest.txt" //Extended log to save in the Logs folder
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 | Objeto | -> | 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 de tipo 4D.SMTPTransporter
type. Es idéntico al comando SMTP New transporter
(acceso directo).
.acceptUnsecureConnection
Histórico
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.acceptUnsecureConnection : Boolean
Descripción
La propiedad .acceptUnsecureConnection
contiene True si se permite a 4D establecer una conexión no cifrada cuando la conexión cifrada no es posible.
It contains False if unencrypted connections are unallowed, in which case an error in returned when encrypted connection is not possible.
Available secured ports are:
SMTP
- 465: SMTPS
- 587 or 25: SMTP with STARTTLS upgrade if supported by the server.
IMAP
- 143: IMAP non-encrypted port
- 993: IMAP with STARTTLS upgrade if supported by the server
POP3
- 110: POP3 non-encrypted port
- 995: POP3 con actualización STARTTLS si lo soporta el servidor.
.authenticationMode
Histórico
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.authenticationMode : Text
Descripción
The .authenticationMode
property contains the authentication mode used to open the session on the mail server.
By default, the most secured mode supported by the server is used.
Los valores posibles son:
Valor | Constantes | Comentario |
---|---|---|
CRAM-MD5 | SMTP authentication CRAM MD5 | Authentication using CRAM-MD5 protocol |
LOGIN | SMTP authentication login | Authentication using LOGIN protocol |
OAUTH2 | SMTP authentication OAUTH2 | Authentication using OAuth2 protocol |
PLAIN | SMTP authentication plain | Authentication using PLAIN protocol |
.bodyCharset
Histórico
Versión | Modificaciones |
---|---|
v18 | Support for UTF8 base64 |
v17 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.
- subject,
- attachment filename(s),
- nombre 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 if possible, otherwise UTF-8 & Quoted-printable (default value) |
mail mode UTF8 in base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII if possible, otherwise UTF-8 & base64 |
.checkConnection()
Histórico
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.checkConnection() : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Resultado | Objeto | <- | Estado de la conexión del objeto transportador |
Descripción
La función .checkConnection()
comprueba la conexión utilizando la información almacenada en el objeto transporter, 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 | booleano | True if the check is successful, False otherwise | |
status | number | (SMTP only) Status code returned by the mail server (0 in case of an issue unrelated to the mail processing) | |
statusText | texto | Status message returned by the mail server, or last error returned in the 4D error stack | |
errors | colección | 4D error stack (not returned if a mail server response is received) | |
[ ].errCode | number | Código de error 4D | |
[ ].message | texto | Description of the 4D error | |
[ ].componentSignature | texto | 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
.connectionTimeOut
Histórico
Versión | Modificaciones |
---|---|
v17 R5 | Añadidos |
.connectionTimeOut : Integer
Descripción
La propiedad .connectionTimeOut
contiene el tiempo máximo de espera (en segundos) permitido para establecer una conexión con el servidor. By default, if the property has not been set in the server object (used to create the transporter object with SMTP New transporter
, POP3 New transporter
, or IMAP New transporter
), the value is 30.
.headerCharset
Histórico
Versión | Modificaciones |
---|---|
v17 R5 | Añadidos |
.headerCharset : Text
Descripción
La propiedad .headerCharset
contiene el conjunto de caracteres y la codificación utilizados para el encabezado del correo electrónico. The header includes the following parts of the email:
- subject,
- attachment filename(s),
- nombre 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 if possible, otherwise UTF-8 & Quoted-printable (default value) |
mail mode UTF8 in base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII if possible, otherwise UTF-8 & base64 |
.host
Histórico
Versión | Modificaciones |
---|---|
v17 R5 | Añadidos |
.host : Text
Descripción
La propiedad .host
contiene el nombre o la dirección IP del servidor local. Used for mail transactions (SMTP, POP3, IMAP).
.keepAlive
Histórico
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.keepAlive : Boolean
Descripción
La propiedad .keepAlive
contiene True si la conexión SMTP debe permanecer activa hasta que el objeto sea destruido transporter
y False si no. 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
transporter
se destruye si la.keepAlive
es true, - después de cada ejecución de la función
.send( )
si la propiedad.keepAlive
es false.
.logFile
Histórico
Versión | Modificaciones |
---|---|
v17 R5 | Añadidos |
.logFile : Text
Descripción
La propiedad .logFile
contiene la ruta del archivo de registro extendido definido (si existe) para la conexión de correo. It can be relative (to the current Logs folder) or absolute.
Unlike regular log files (enabled via the SET DATABASE PARAMETER
command), extended log files store MIME contents of all sent mails and do not have any size limit. For more information about extended log files, refer to:
- SMTP connections - 4DSMTPLog.txt
- POP3 connections - 4DPOP3Log.txt
- IMAP connections - 4DIMAPLog.txt
.port
Histórico
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.port : Integer
Descripción
La propiedad .port
contiene el número de puerto utilizado para las transacciones de correo. By default, if the port property has not been set in the server object (used to create the transporter object with SMTP New transporter
, POP3 New transporter
, IMAP New transporter
), the port used is:
- SMTP - 587
- POP3 - 995
- IMAP - 993
.send()
Histórico
Versión | Modificaciones |
---|---|
v17 R5 | Support of mime contents |
v17 R4 | Añadidos |
.send( mail : Object ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Objeto | -> | Email a enviar | |
Resultado | Objeto | <- | Estado SMTP |
Descripción
La función .send()
envía el objeto mail object al servidor SMTP definido en el objeto transporter
y devuelve un objeto estado.
The
transporter
object must have already been created using theSMTP New transporter
command.
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()
. En caso contrario, permanecerá activo hasta que se elimine el objeto transporter
. 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 | booleano | 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 | texto | 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
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.sendTimeOut : Integer
Descripción
La propiedad .sendTimeOut
contiene el tiempo máximo de espera (en segundos) de una llamada a .send( )
antes de que se produzca un timeout. By default, if the .sendTimeOut
property has not been set in the server
object, the value 100 is used.
.user
Histórico
Versión | Modificaciones |
---|---|
v17 R4 | Añadidos |
.user : Text
Descripción
La propiedad .user
contiene el nombre de usuario utilizado para la autenticación en el servidor de correo.