Saltar al contenido principal
Versión: v20 R4 BETA

IMAPTransporter

La clase IMAPTransporter permite recuperar mensajes de un servidor de mensajería IMAP.

Objeto IMAP Transporter

Los objetos IMAP Transporter se instancian con el comando IMAP New transporter. Ofrecen las siguientes propiedades y funciones:

.acceptUnsecureConnection: Boolean    True si 4D está autorizado a establecer una conexión no cifrada
.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object
    añade banderas a los msgIDs para las palabras claves especificadas
.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object    añade un mailObj al destinationBox
.authenticationMode: Text    el modo de autenticación utilizado para abrir la sesión en el servidor de correo
.checkConnection() : Object     verifica la conexión utilizando la información almacenada en el objeto transportador
.checkConnectionDelay : Integer    el tiempo máximo (en segundos) permitido antes de comprobar la conexión con el servidor
.connectionTimeOut : Integer    el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor
.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object
    copia los mensajes definidos por msgsIDs o allMsgs al destino destinationBox en el servidor IMAP
.createBox( name : Text ) : Object    crea un buzón con el name dado
.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object
    define la bandera "eliminado" para los mensajes definidos en msgsIDs o allMsgs
.deleteBox( name : Text ) : Object    elimina permanentemente el buzón con el name dado del servidor IMAP
.expunge() : Object    elimina todos los mensajes con la bandera "deleted" del servidor de correo IMAP.
.getBoxInfo( { name : Text }) : Object    devuelve un objeto boxInfo correspondiente al maibox actual, o el name del buzón
.getBoxList( { parameters : Object } ) : Collection    devuelve una colección de buzones que describe todos los buzones disponibles
.getDelimiter() : Text    devuelve el caracter utilizado para delimitar los niveles de jerarquía en el nombre del buzón
.getMail( msgNumber: Integer { ; options : Object } ) : Object
.getMail( msgID: Text { ; options : Object } ) : Object
    devuelve el objeto Email correspondiente al msgNumber o msgID en el buzón designado por el IMAP_transporter
.getMails( ids : Collection { ; options : Object } ) : Object
.getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object
    returns a BLOB containing the MIME contents for the message corresponding to the msgNumber or msgID in the mailbox designated by the IMAP_transporter
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
.getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob
    devuelve un BLOB con el contenido MIME del mensaje correspondiente a msgNumber o msgID en el buzón designado por el IMAP_transporter
.host : Text    el nombre o la dirección IP del servidor local
.logFile : Text    la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correo
.move( msgsIDs : Collection ; destinationBox : Text ) : Object
.move( allMsgs : Integer ; destinationBox : Text ) : Object
    mueve los mensajes definidos por msgsIDs o allMsgs al destino destinationBox en el servidor IMAP
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection    convierte los números de secuencia en identificadores únicos IMAP para los mensajes en el rango secuencial designado por startMsg y endMsg
.removeFlags( msgIDs : Collection ; keywords : Object ) : Object
.removeFlags( msgIDs : Text ; keywords : Object ) : Object
.removeFlags( msgIDs : Longint ; keywords : Object ) : Object
    sets the "deleted" flag for the messages defined in msgsIDs or allMsgs
.renameBox( currentName : Text ; newName : Text ) : Object    cambia el nombre de un buzón en el servidor IMAP
.port : Integer     el número de puerto utilizado para las transacciones de correo
.searchMails( searchCriteria : Text ) : Collection    busca los mensajes que coinciden con los searchCriteria dados en el buzón actual
.selectBox( name : Text { ; state : Integer } ) : Object    selecciona el buzón name como el buzón actual
.subscribe( name : Text ) : Object    permite añadir o eliminar el buzón especificado al conjunto de buzones "suscritos" del servidor IMAP
.unsubscribe( name : Text ) : Object    elimina un buzón de un conjunto de buzones suscritos
.user : Text     el nombre del usuario utilizado para la autenticación en el servidor de correo

IMAP New transporter

Histórico
VersiónModificaciones
v18 R4Añadidos

IMAP New transporter( server : Object ) : 4D.IMAPTransporter

ParámetrosTipoDescripción
serverObject->Información del servidor de correo
Result4D.IMAPTransporter<-IMAP transporter object

|

Descripción

El comando IMAP New transporter configura una nueva conexión IMAP según el parámetro server y devuelve un nuevo objeto transporter. El objeto transportador devuelto se utilizará normalmente para recibir correos electrónicos.

En el parámetro server, pase un objeto que contenga las siguientes propiedades:

serverValor por defecto (si se omite)
.acceptUnsecureConnection: Boolean    True si 4D está autorizado a establecer una conexión no cifradaFalse
.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 utiliza accessTokenOAuth2 pero se omite authenticationMode, se utiliza el protocolo OAuth 2 (si el servidor lo permite). No se devuelve en el objeto IMAP transporter.
ninguno
.authenticationMode: Text    el modo de autenticación utilizado para abrir la sesión en el servidor de correose utiliza el modo de autenticación más seguro soportado por el servidor
.checkConnectionDelay : Integer    el tiempo máximo (en segundos) permitido antes de comprobar la conexión con el servidor300
.connectionTimeOut : Integer    el tiempo de espera máximo (en segundos) autorizado para establecer una conexión con el servidor30
.host : Text    el nombre o la dirección IP del servidor localmandatory
.logFile : Text    la ruta del archivo de historial extendido definido (si lo hay) para la conexión de correoninguno
.password: Text
Contraseña de usuario para la autenticación en el servidor. No se devuelve en el objeto IMAP transporter.
ninguno
.port : Integer     el número de puerto utilizado para las transacciones de correo993
.user : Text     el nombre del usuario utilizado para la autenticación en el servidor de correoninguno

Atención: asegúrese de que el tiempo de espera definido sea menor que el tiempo de espera del servidor, de lo contrario el tiempo de espera del cliente será inútil.

Result

La función devuelve un IMAP transporter. Todas las propiedades devueltas son de sólo lectura.

La conexión IMAP se cierra automáticamente cuando se destruye el objeto transportador.

Ejemplo

$server:=New object
$server.host:="imap.gmail.com" //Obligatorio
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"
$server.logFile:="LogTest.txt" //log a guardar en la carpeta Logs

var $transporter : 4D.IMAPTransporter
$transporter:=IMAP New transporter($server)

$status:=$transporter.checkConnection()
If(Not($status.success))
ALERT("An error occurred: "+$status.statusText)
End if

4D.IMAPTransporter.new()

4D.IMAPTransporter.new( server : Object ) : 4D.IMAPTransporter

ParámetrosTipoDescripción
serverObject->Información del servidor de correo
Result4D.IMAPTransporter<-IMAP transporter object

|

Descripción

La función 4D.IMAPTransporter.new() crea y devuelve un nuevo objeto del tipo 4D.IMAPTransporter. .

.acceptUnsecureConnection

Histórico
VersiónModificaciones
v17 R4Añ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.

.addFlags()

Histórico
VersiónModificaciones
v20Soporta palabras claves personalizadas
v18 R6Añadidos

.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object

ParámetrosTipoDescripción
msgIDsCollection->Colección de cadenas: identificadores únicos de mensajes (texto)
Texto: ID único de un mensaje
Longint (IMAP all): todos los mensajes del buzón seleccionado
keywordsObject->Banderas de palabras claves a añadir
ResultObject<-Estado de la operación addFlags

|

Descripción

La función .addFlags() añade banderas a los msgIDs para las palabras claves especificadas.

En el parámetro msgIDs, puede pasar:

  • una collection contiene los identificadores únicos de mensajes específicos, o

  • el ID único (texte) de un solo mensaje o

  • la siguiente constante (longint) para todos los mensajes del buzón seleccionado:

    ConstanteValorComentario
    IMAP all1Seleccionar todos los mensajes del buzón seleccionado

El parámetro keywords permite definir las banderas que se añadirán a msgIDs. Puede utilizar las siguientes banderas estándar, así como banderas personalizadas (la compatibilidad con banderas personalizadas depende de la implementación del servidor):

PropiedadTipoDescripción
$draftBooleanTrue para añadir el marcador "draft" al mensaje
$seenBooleanTrue para añadir el marcador "seen" al mensaje
$flaggedBooleanTrue para añadir el marcador "flagged" al mensaje
$answeredBooleanTrue para añadir el marcador "answered" al mensaje
$deletedBooleanTrue para añadir el marcador "deleted" al mensaje
<custom flag>BooleanTrue para añadir la bandera personalizada al mensaje

Los nombres de las banderas personalizadas deben respetar esta regla: la palabra clave debe ser una cadena que no distinga entre mayúsculas y minúsculas, excluyendo los caracteres de control y el espacio, y no puede incluir ninguno de estos caracteres: ( ) { ] % * " \

  • Para que una palabra clave se tenga en cuenta tiene que ser true.
  • La interpretación de los indicadores de palabras claves puede variar según el cliente de correo.

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo

var $options;$transporter;$boxInfo;$status : Object

$options:=New object
$options.host:="imap.gmail.com"
$options.port:=993
$options.user:="4d@gmail.com"
$options.password:="xxxxx"

// Crear transportador
$transporter:=IMAP New transporter($options)

// Seleccionar buzón de correo
$boxInfo:=$transporter.selectBox("INBOX")

// Marcar todos los mensajes de INBOX como leídos/vistos
$flags:=New object
$flags["$seen"]:=True
$status:=$transporter.addFlags(IMAP all;$flags)

.append()

Histórico
VersiónModificaciones
v18 R6Añadidos

.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object

ParámetrosTipoDescripción
mailObjObject->Objeto Email
destinationBoxText->Buzón para recibir el objeto Email
optionsObject->Objeto que contiene información del charset
ResultObject<-Estado de la operación

|

Descripción

La función .append() añade un mailObj al destinationBox.

En el parámetro mailObj, pase un objeto Email. En el parámetro mailObj, pase un objeto Email. La función .append() soporta los marcadores de palabras clave en el atributo keywords de los objetos email.

El parámetro opcional destinationBox permite pasar el nombre del buzón donde se añadirá el objeto mailObj. Si se omite, se utiliza el buzón actual.

En el parámetro opcional options, puede pasar un objeto para definir el charset y la codificación para partes específicas del correo electrónico. Propiedades disponibles:

PropiedadTipoDescripción
headerCharsetTextCharset y codificación utilizados para las siguientes partes del correo electrónico: asunto, nombres de archivos adjuntos y atributo(s) del nombre del correo electrónico. Valores posibles: ver la tabla de charsets posibles a continuación
bodyCharsetTextCharset y codificación utilizados para el contenido html y el texto del cuerpo del correo electrónico. Valores posibles: ver la tabla de charsets posibles a continuación

Charsets posibles:

ConstanteValorComentario
mail mode ISO2022JPUS-ASCII_ISO-2022-JP_UTF8_QP
  • headerCharset: US-ASCII si es posible, japonés (ISO-2022-JP) & Quoted-printable si es posible, de lo contrario UTF-8 & Quoted-printable
  • bodyCharset: US-ASCII si es posible, japonés (ISO-2022-JP) y 7 bits si es posible, de lo contrario UTF-8 & Quoted-printable
mail mode ISO88591ISO-8859-1
  • headerCharset: ISO-8859-1 & Quoted-printable
  • bodyCharset: ISO-8859-1 & 8-bit
mail mode UTF8US-ASCII_UTF8_QPheaderCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & Quoted-printable (valor por defecto)
mail mode UTF8 in base64US-ASCII_UTF8_B64headerCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & base64

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo

Para guardar un correo electrónico en el buzón de borradores:

var $settings; $status; $msg; $imap: Object

$settings:=New object("host"; "domain.com"; "user"; "xxxx"; "password"; "xxxx"; "port"; 993)

$imap:=IMAP New transporter($settings)

$msg:=New object
$msg.from:="xxxx@domain.com"
$msg.subject:="Lorem Ipsum"
$msg.textBody:="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
$msg.keywords:=New object
$msg.keywords["$seen"]:=True//marcar el mensaje como leído
$msg.keywords["$draft"]:=True//marcar el mensaje como borrador

$status:=$imap.append($msg; "Drafts")

.authenticationMode

Histórico
VersiónModificaciones
v17 R4Añ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:

ValorConstantesComentario
CRAM-MD5IMAP authentication CRAM MD5Autenticación utilizando el protocolo CRAM-MD5
LOGINIMAP authentication loginAutenticación utilizando el protocolo LOGIN
OAUTH2IMAP authentication OAUTH2Autenticación utilizando el protocolo OAuth2
PLAINIMAP authentication plainAutenticación utilizando el protocolo PLAIN

.checkConnection()

Histórico
VersiónModificaciones
v17 R4Añadidos

.checkConnection() : Object

ParámetrosTipoDescripción
ResultObject<-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:

PropiedadTipoDescripción
successbooleanTrue si la verificación es exitosa, False en caso contrario
statusnumber(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)
statusTexttextMensaje de estado devuelto por el servidor de correo, o último error devuelto en la pila de errores de 4D
errorscollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor de correo)
[ ].errCodenumberCódigo de error 4D
[ ].messagetextDescripción del error 4D
[ ].componentSignaturetextFirma del componente interno que ha devuelto el error

.checkConnectionDelay

Histórico
VersiónModificaciones
v18 R4Añadidos

.checkConnectionDelay : Integer

Descripción

La propiedad .checkConnectionDelay contiene el tiempo máximo (en segundos) permitido antes de comprobar la conexión con el servidor. Si se supera este tiempo entre dos llamadas al método, se comprobará la conexión con el servidor. Por defecto, si la propiedad no se ha definido en el objeto server<, el valor es de 300.

Atención: asegúrese de que el tiempo de espera definido sea menor que el tiempo de espera del servidor, de lo contrario el tiempo de espera del cliente será inútil.

.connectionTimeOut

Histórico
VersiónModificaciones
v17 R5Añ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.

.copy()

Histórico
VersiónModificaciones
v18 R5Añadidos

.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object

ParámetrosTipoDescripción
msgsIDsCollection->Colección de identificadores únicos de mensajes (cadenas)
allMsgsInteger->IMAP all: todos los mensajes del buzón seleccionado
destinationBoxText->Buzón para recibir mensajes copiados
ResultObject<-Estado de la operación de copia

|

Descripción

La función .copy() copia los mensajes definidos por msgsIDs o allMsgs al destino destinationBox en el servidor IMAP.

Puede pasar:

  • en el parámetro msgsIDs, una colección contiene los IDs únicos de los mensajes específicos a copiar, o
  • en el parámetro allMsgs, la constante IMAP all (entero) para copiar todos los mensajes del buzón seleccionado.

El parámetro destinationBox permite pasar un valor texto con el nombre del buzón donde se colocarán las copias de los mensajes.

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo 1

Para copiar una selección de mensajes:

 var $server;$boxInfo;$status : Object
var $mailIds : Collection
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obligatorio
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//seleccionar buzón
$boxInfo:=$transporter.selectBox("inbox")

//obtener la colección de IDs únicos de los mensajes
$mailIds:=$transporter.searchMails("subject \"4D new feature:\"")

// copiar los mensajes encontrados en el buzón "documents"
$status:=$transporter.copy($mailIds;"documents")

Ejemplo 2

Para copiar todos los mensajes del buzón actual:

 var $server;$boxInfo;$status : Object
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obligatorio
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//seleccionar buzón

$boxInfo:=$transporter.selectBox("inbox")

// copiar los mensajes encontrados en el buzón "documents"
$status:=$transporter.copy(IMAP all;"documents")

.createBox()

Histórico
VersiónModificaciones
v19Añadidos

.createBox( name : Text ) : Object

ParámetrosTipoDescripción
nameText->Nombre del nuevo buzón
ResultObject<-Estado de la operación de creación del buzón

|

Descripción

La función .createBox() crea un buzón con el name dado. Si el caracter separador de jerarquía del servidor IMAP aparece en otra parte del nombre del buzón, el servidor IMAP creará todos los nombre padre necesarios para crear el buzón dado.

En otras palabras, un intento de crear "Projects/IMAP/Doc" en un servidor en el que "/" es el carácter separador de jerarquía creará:

  • Sólo el buzón "Doc" si "Projects" & "IMAP" ya existen.
  • Los buzones "IMAP" & "Doc" si sólo existe "Projects".
  • Los buzones "Projects" & "IMAP" & "Doc", si no existen.

En el parámetro name, pasa el nombre del nuevo buzón.

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo

Para crear un nuevo buzón "Invoices":

var $server,$boxInfo,$result : Object
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Mandatory
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

//create transporter
$transporter:=IMAP New transporter($server)

//select mailbox
$boxInfo:=$transporter.selectBox("INBOX")

If($boxInfo.mailCount>0)
// retrieve the headers of the last 20 messages without marking them as read
$result:=$transporter.getMails($boxInfo.mailCount-20;$boxInfo.mailCount;\
New object("withBody";False;"updateSeen";False))
For each($mail;$result.list)
// ...
End for each
End if

.delete()

Histórico
VersiónModificaciones
v18 R5Añadidos

.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object

ParámetrosTipoDescripción
msgsIDsCollection->Colección de identificadores únicos de mensajes (cadenas)
allMsgsInteger->IMAP all: todos los mensajes del buzón seleccionado
ResultObject<-Estado de la operación de eliminación

|

Descripción

La función .delete() define la bandera "eliminado" para los mensajes definidos en msgsIDs o allMsgs.

Puede pasar:

  • en el parámetro msgsIDs, una colección contiene los IDs únicos de los mensajes específicos a eliminar, o
  • en el parámetro allMsgs, la constante IMAP all (entero) para eliminar todos los mensajes del buzón seleccionado.

La ejecución de esta función no elimina realmente los mensajes. Los mensajes con la bandera "delete" pueden seguir siendo encontrados por la función .searchMails(). Los mensajes marcados se eliminan del servidor IMAP con la función .expunge() o al seleccionar otro buzón o cuando se destruye el objeto transporter (creado con IMAP New transporter).

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo 1

Para eliminar una selección de mensajes:

 var $server;$boxInfo;$status : Object
var $mailIds : Collection
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obligatorio
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//seleccionar buzón
$boxInfo:=$transporter.selectBox("Inbox")

//obtener la colección de IDs únicos de los mensajes
$mailIds:=$transporter.searchMails("subject \"Reports\"")

// Borrar los mensajes seleccionados
$status:=$transporter.delete($mailIds)

Ejemplo 2

Para eliminar todos los mensajes del buzón actual:

 var $server;$boxInfo;$status : Object
var $transporter : 4D.IMAPTransporter

$server:=New object
$server.host:="imap.gmail.com" //Obligatorio
$server.port:=993
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=IMAP New transporter($server)

//seleccionar buzón
$boxInfo:=$transporter.selectBox("Junk Email")

// Borrar los mensajes seleccionados en el buzón actual
$status:=$transporter.delete(IMAP all)

.deleteBox()

Histórico
VersiónModificaciones
v19Añadidos

.deleteBox( name : Text ) : Object

ParámetrosTipoDescripción
nameText->Nombre del buzón a eliminar
ResultObject<-Estado de la operación de eliminación del buzón

|

Descripción

La función .deleteBox() elimina permanentemente el buzón con el name dado del servidor IMAP. Intentar eliminar un INBOX o un buzón que no existe generará un error.

En el parámetro name, pase el nombre del buzón a eliminar.

  • La función no puede eliminar un buzón que tiene buzones hijos si el buzón padre tiene el atributo "\Noselect".
  • Todos los mensajes del buzón eliminado también se borrarán.
  • La posibilidad de eliminar un buzón depende del servidor de correo.

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo

Para eliminar el buzón secundario "Nova Orion Industries" del interior del buzón "Bills":

var $pw; $name : text
var $options; $transporter; $status : object

$options:=New object

$pw:=Request("Please enter your password:")

If(OK=1) $options.host:="imap.gmail.com"
$options.user:="test@gmail.com"
$options.password:=$pw

$transporter:=IMAP New transporter($options)

// delete mailbox
$name:="Bills"+$transporter.getDelimiter()+"Nova Orion Industries"
$status:=$transporter.deleteBox($name)

If ($status.success)
ALERT("Mailbox deletion successful!")
Else
ALERT("Error: "+$status.statusText)
End if
End if
Else
ALERT("Error: "+$status.statusText)
End if
End if

.expunge()

Histórico
VersiónModificaciones
v18 R6Añadidos

.expunge() : Object

ParámetrosTipoDescripción
ResultObject<-Estado de la operación expunge

|

Descripción

La función .expunge() elimina todos los mensajes con la bandera "deleted" del servidor de correo IMAP. La bandera "deleted" se puede establecer con los métodos .delete() o .addFlags().

Objeto devuelto

La función devuelve un objeto que describe el estado IMAP:

PropiedadTipoDescripción
successBooleanTrue si la operación tiene éxito, False en caso contrario
statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
[].errcodeNumberCódigo de error 4D
[].messageTextDescripción del error 4D
[].componentSignatureTextFirma del componente interno que ha devuelto el error

Ejemplo

var $options;$transporter;$boxInfo;$status : Object
var $ids : Collection

$options:=New object
$options.host:="imap.gmail.com"
$options.port:=993
$options.user:="4d@gmail.com"
$options.password:="xxxxx"

// Crear transportador
$transporter:=IMAP New transporter($options)

// Seleccionar buzón
$boxInfo:=$transporter.selectBox("INBOX")

// Buscar y eliminar todos los mensajes vistos en INBOX
$ids:=$transporter.searchMails("SEEN")
$status:=$transporter.delete($ids)

// Purgar todos los mensajes marcados como borrados
$status:=$transporter.expunge()

.getBoxInfo()

Histórico
VersiónModificaciones
v20se devuelve el id
v18 R5name< es opcional
v18 R4Añadidos

.getBoxInfo( { name : Text }) : Object

ParámetrosTipoDescripción
nameText->Nombre del buzón
ResultObject<-objeto boxInfo

|

Descripción

La función .getBoxInfo() devuelve un objeto boxInfo correspondiente al maibox actual, o el name del buzón. Esta función devuelve la misma información que .selectBox() sin cambiar el buzón actual.

En el parámetro opcional name, pase el nombre del buzón a acceder. El nombre representa una jerarquía inequívoca de izquierda a derecha, con niveles separados por un carácter delimitador específico. El delimitador se puede recuperar con la función .getDelimiter().

Si el buzón name no es seleccionable o no existe, la función genera un error y devuelve null.

Objeto devuelto

El objeto boxInfo devuelto contiene las siguientes propiedades:

PropiedadTipoDescripción
nametextNombre del buzón
mailCountnumberNúmero de mensajes en el buzón
mailRecentnumberNúmero de mensajes con el marcador "reciente" (que indica los mensajes nuevos)
idtextId. único del buzón

Ejemplo

 var $transporter : 4D.IMAPTransporter
$transporter:=IMAP New transporter($server)

$info:=$transporter.getBoxInfo("INBOX")
ALERT("INBOX contains "+String($info.mailRecent)+" recent emails.")

.getBoxList()

Histórico
VersiónModificaciones
v18 R4Añadidos
v19Adición parámetro isSubscribed

.getBoxList( { parameters : Object } ) : Collection

ParámetrosTipoDescripción
parametersObject->Objeto de parámetro
ResultCollection<-Colección de objetos mailbox

|

Descripción

La función .getBoxList() devuelve una colección de buzones que describe todos los buzones disponibles. Esta función permite gestionar localmente la lista de mensajes localizados en el servidor de correo IMAP.

En el parámetro opcional parameters, pase un objeto que contenga valores para filtrar los buzones devueltos. Puede pasar:

PropiedadTipoDescripción
isSubscribedBoolean
  • True para devolver sólo los buzones suscritos
  • False para devolver todos los buzones disponibles
  • Result

    Cada objeto de la colección devuelta contiene las siguientes propiedades:

    PropiedadTipoDescripción
    [].nametextNombre del buzón
    [].selectablebooleanIndica si los derechos de acceso permiten o no seleccionar el buzón:
    • true - el buzón puede ser seleccionado
    • false - el buzón no puede ser seleccionado
    [].inferiorbooleanIndica si los derechos de acceso permiten o no crear una jerarquía inferior en el buzón:
    • true - se puede crear un nivel inferior
    • false - no se puede crear un nivel inferior
    [].interestingbooleanIndica si el buzón ha sido marcado como "interesante" por el servidor:
    • true - El buzón ha sido marcado como "interesante" por el servidor. Por ejemplo, puede contener mensajes nuevos.
    • false - El buzón no ha sido marcado como "interesante" por el servidor.

    Si la cuenta no contiene buzones, se devuelve una colección vacía.

    • Si no hay ninguna conexión abierta, .getBoxList() abrirá una conexión.
    • Si la conexión no se ha utilizado desde el retraso de conexión designado (ver IMAP New transporter), se llama automáticamente a la función .checkConnection( ).

    Ejemplo

     var $transporter : 4D.IMAPTransporter
    $transporter:=IMAP New transporter($server)

    $boxList:=$transporter.getBoxList()

    For each($box;$boxList)
    If($box.interesting)
    $split:=Split string($box.name;$transporter.getDelimiter())
    ALERT("New emails are available in the box: "+$split[$split.length-1])
    End if
    End for each

    .getDelimiter()

    Histórico
    VersiónModificaciones
    v18 R4Añadidos

    .getDelimiter() : Text

    ParámetrosTipoDescripción
    ResultText<-Caracter delimitador de jerarquía

    |

    Descripción

    La función .getDelimiter() devuelve el caracter utilizado para delimitar los niveles de jerarquía en el nombre del buzón.

    El delimitador es un carácter que puede utilizarse para:

    • crear buzones de nivel inferior
    • buscar más arriba o más abajo en la jerarquía del buzón

    Result

    Caracter delimitador del nombre del buzón.

    • Si no hay ninguna conexión abierta, getDelimiter() abrirá una conexión.
    • Si la conexión no se ha utilizado desde el retraso de conexión designado, la función .checkConnection() se llama automáticamente.

    Ejemplo

     var $transporter : 4D.IMAPTransporter
    $transporter:=IMAP New transporter($server)

    $boxList:=$transporter.getBoxList()

    For each($box;$boxList)
    If($box.interesting)
    $split:=Split string($box.name;$transporter.getDelimiter())
    ALERT("New emails are available in the box: "+$split[$split.length-1])
    End if
    End for each

    .getMail()

    Histórico
    VersiónModificaciones
    v18 R4Añadidos

    .getMail( msgNumber: Integer { ; options : Object } ) : Object
    .getMail( msgID: Text { ; options : Object } ) : Object

    ParámetrosTipoDescripción
    msgNumberInteger->Número de secuencia del mensaje
    msgIDText->ID único del mensaje
    optionsObject->Instrucciones sobre la gestión de mensajes
    ResultObject<-Objeto Email

    |

    Descripción

    La función .getMail() devuelve el objeto Email correspondiente al msgNumber o msgID en el buzón designado por el IMAP_transporter. Esta función permite recuperar la información sobre el email.

    En el primer parámetro, puede pasar:

    • msgNumber, un valor integer indicando el número de secuencia del mensaje a recuperar o
    • msgID, un valor text indicando el ID único del mensaje a recuperar.

    El parámetro opcional options permite pasar un objeto que define las instrucciones adicionales para la gestión del mensaje. Las siguientes propiedades están disponibles:

    PropiedadTipoDescripción
    updateSeenbooleanSi True, el mensaje se marca como "visto" en el buzón. Si es False, el mensaje no se marca como "visto". Valor por defecto: True
    withBodybooleanPase True para devolver el cuerpo del mensaje. Si es False, sólo se devuelve el encabezado del mensaje. Valor por defecto: True
    • La función genera un error y devuelve Null si msgID designa un mensaje inexistente,
    • Si no se selecciona ningún buzón con la función .selectBox(), se genera un error,
    • Si no hay ninguna conexión abierta, .getMail() abrirá una conexión con el último buzón especificado por .selectBox().

    Result

    .getMail() devuelve un objet Email con las propiedades IMAP adicionales siguientes: id, receivedAt y size.

    Ejemplo

    Quiere obtener el mensaje con ID = 1:

     var $server : Object
    var $info; $mail; $boxInfo : Variant
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Obligatorio
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    //crear transportador
    $transporter:=IMAP New transporter($server)

    //seleccionar buzón
    $boxInfo:=$transporter.selectBox("Inbox")

    //obtener el objeto Email con ID 1
    $mail:=$transporter.getMail(1)

    .getMails()

    Histórico
    VersiónModificaciones
    v18 R5Añadidos

    .getMails( ids : Collection { ; options : Object } ) : Object
    .getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object

    ParámetrosTipoDescripción
    idsCollection->Colección de identificadores de mensajes
    startMsgInteger->Número de secuencia del primer mensaje
    endMsgInteger->Número de secuencia del último mensaje
    optionsObject->Instrucciones sobre la gestión de mensajes
    ResultObject<-Comentario
    • una colección de objetos Email y
    • una colección de identificadores o números para los mensajes que faltan, si los hay

    |

    Descripción

    The .getMIMEAsBlob() function returns a BLOB containing the MIME contents for the message corresponding to the msgNumber or msgID in the mailbox designated by the IMAP_transporter.

    Primera sintaxis:

    .getMails( ids { ; options } ) -> result

    La primera sintaxis permite recuperar los mensajes en función de sus identificadores.

    En el parámetro ids, pase una colección de IDs para los mensajes a devolver. Puede obtener los IDs con .getMail().

    El parámetro opcional options permite definir las partes de los mensajes a devolver. Consulte la tabla Opciones a continuación para obtener una descripción de las propiedades disponibles.

    Segunda sintaxis:

    .getMails( startMsg ; endMsg { ; options } ) -> result

    La segunda sintaxis permite recuperar los mensajes en función de un rango secuencial. Los valores pasados representan la posición de los mensajes en el buzón.

    En el parámetro startMsg, pase un valor entero correspondiente al número del primer mensaje en un rango secuencial. Si se pasa un número negativo (startMsg <= 0), se utilizará el primer mensaje del buzón como inicio de la secuencia.

    En el parámetro endMsg, pase un valor entero correspondiente al número del último mensaje a incluir en un rango secuencial. Si se pasa un número negativo (endMsg <= 0), se utilizará el último mensaje del buzón como fin de secuencia.

    El parámetro opcional options permite definir las partes de los mensajes a devolver.

    Opciones

    PropiedadTipoDescripción
    updateSeenBooleanSi True, los mensajes especificados se marcan como "vistos" en el buzón. Si False, los mensajes no se marcan como "vistos". Valor por defecto: True
    withBodyBooleanPase True para devolver el cuerpo de los mensajes específicos. Si False, sólo se devuelve los encabezados de los mensajes. Valor por defecto: True
    • Si no se selecciona ningún buzón con el comando .selectBox(), se genera un error.
    • Si no hay ninguna conexión abierta, .getMails() abrirá una conexión con el último buzón especificado por .selectBox().

    Result

    .getMails() devuelve un objeto que contiene las siguientes colecciones:

    PropiedadTipoDescripción
    listaCollectionColección de objetos Email. Si no se encuentran objetos Email, se devuelve una colección vacía.
    notFoundCollectionColección de:
    • primera sintaxis - IDs de mensajes pasados previamente que no existen
    • segunda sintaxis - números de secuencia de los mensajes entre startMsg y endMsg que no existen
    Se devuelve una colección vacía si se encuentran todos los mensajes.

    Ejemplo

    Quiere recuperar los 20 correos electrónicos más recientes sin cambiar el estado "visto":

     var $server,$boxInfo,$result : Object
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Obligatorio
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    //crear transportador
    $transporter:=IMAP New transporter($server)

    //seleccionar buzón
    $boxInfo:=$transporter.selectBox("INBOX")

    If($boxInfo.mailCount>0)
    // recuperar los encabezados de los últimos 20 mensajes sin marcarlos como leídos
    $result:=$transporter.getMails($boxInfo.mailCount-20;$boxInfo.mailCount;\
    New object("withBody";False;"updateSeen";False))
    For each($mail;$result.list)
    // ...
    End for each
    End if

    .getMIMEAsBlob()

    Histórico
    VersiónModificaciones
    v18 R4Añadidos

    .getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
    .getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob

    ParámetrosTipoDescripción
    msgNumberInteger->Número de secuencia del mensaje
    msgIDText->ID único del mensaje
    updateSeenBoolean->Si True, el mensaje se marca como "visto" en el buzón. Si False, el mensaje se deja igual.
    ResultBLOB<-Blob de la cadena MIME devuelta por el servidor de correo

    |

    Descripción

    La función .getMIMEAsBlob() devuelve un BLOB con el contenido MIME del mensaje correspondiente a msgNumber o msgID en el buzón designado por el IMAP_transporter.

    En el primer parámetro, puede pasar:

    • msgNumber, un valor integer indicando el número de secuencia del mensaje a recuperar o
    • msgID, un valor text indicando el ID único del mensaje a recuperar.

    El parámetro opcional updateSeen permite indicar si el mensaje está marcado como "visto" en el buzón. Puede pasar:

    • True - para marcar el mensaje como "visto" (indicando que el mensaje ha sido leído)
    • False - to leave the message's "seen" status untouched > The function returns an empty BLOB if msgNumber or msgID designates a non-existing message, > If no mailbox is selected with the .selectBox() command, an error is generated, > If there is no open connection, .getMIMEAsBlob() will open a connection the last mailbox specified with .selectBox().
      • La función genera un error y devuelve Null si name designa un buzón inexistente.
      • Si no hay ninguna conexión abierta, .selectBox() abrirá una conexión.
      • Si no hay ninguna conexión abierta, .getMIMEAsBlob() abrirá una conexión con el último buzón especificado por .selectBox().

    Result

    .getMIMEAsBlob() devuelve un BLOB que puede almacenarse en una base de datos o convertirse en un objeto Email con el comando MAIL Convert from MIME.

    Ejemplo

     var $server : Object
    var $boxInfo : Variant
    var $blob : Blob
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com"
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    //crear transportador
    $transporter:=IMAP New transporter($server)

    //seleccionar buzón
    $boxInfo:=$transporter.selectBox("Inbox")

    //obtener BLOB
    $blob:=$transporter.getMIMEAsBlob(1)

    .host

    Histórico
    VersiónModificaciones
    v17 R5Añ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).

    .logFile

    Histórico
    VersiónModificaciones
    v17 R5Añ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:

    .move()

    Histórico
    VersiónModificaciones
    v18 R5Añadidos

    .move( msgsIDs : Collection ; destinationBox : Text ) : Object
    .move( allMsgs : Integer ; destinationBox : Text ) : Object

    ParámetrosTipoDescripción
    msgsIDsCollection->Colección de identificadores únicos de mensajes (cadenas)
    allMsgsInteger->IMAP all: todos los mensajes del buzón seleccionado
    destinationBoxText->Buzón para recibir los mensajes desplazados
    ResultObject<-Estado de la operación de desplazamiento

    |

    Descripción

    La función .move() mueve los mensajes definidos por msgsIDs o allMsgs al destino destinationBox en el servidor IMAP.

    Puede pasar:

    • en el parámetro msgsIDs, una colección contiene los IDs únicos de los mensajes específicos a mover, o
    • en el parámetro allMsgs, la constante IMAP all (entero) para mover todos los mensajes del buzón seleccionado.

    El parámetro destinationBox permite pasar un valor texto con el nombre del buzón donde los mensajes serán desplazados.

    Esta función se basa en la especificación del protocolo IMAP.

    Objeto devuelto

    La función devuelve un objeto que describe el estado IMAP:

    PropiedadTipoDescripción
    successBooleanTrue si la operación tiene éxito, False en caso contrario
    statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
    errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
    [].errcodeNumberCódigo de error 4D
    [].messageTextDescripción del error 4D
    [].componentSignatureTextFirma del componente interno que ha devuelto el error

    Ejemplo 1

    Para mover una selección de mensajes:

     var $server;$boxInfo;$status : Object
    var $mailIds : Collection
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Obligatorio
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    $transporter:=IMAP New transporter($server)

    //seleccionar buzón
    $boxInfo:=$transporter.selectBox("inbox")

    //obtener la colección de IDs únicos de los mensajes
    $mailIds:=$transporter.searchMails("subject \"4D new feature:\"")

    // Mover los mensajes encontrados del buzón actual al buzón "documents"
    $status:=$transporter.move($mailIds;"documents")

    Ejemplo 2

    Para mover todos los mensajes del buzón actual:

     var $server;$boxInfo;$status : Object
    var $transporter : 4D.IMAPTransporter

    $server:=New object
    $server.host:="imap.gmail.com" //Obligatorio
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    $transporter:=IMAP New transporter($server)

    //seleccionar buzón
    $boxInfo:=$transporter.selectBox("inbox")

    // mover todos los mensajes del buzón actual al buzón "documents"
    $status:=$transporter.move(IMAP all;"documents")

    .numToID()

    Histórico
    VersiónModificaciones
    v18 R5Añadidos

    .numToID( startMsg : Integer ; endMsg : Integer ) : Collection

    ParámetrosTipoDescripción
    startMsgInteger->Número de secuencia del primer mensaje
    endMsgInteger->Número de secuencia del último mensaje
    ResultCollection<-Colección de identificadores de mensajes únicos

    |

    Descripción

    La función .numToID() convierte los números de secuencia en identificadores únicos IMAP para los mensajes en el rango secuencial designado por startMsg y endMsg en el buzón actualmente seleccionado.

    En el parámetro startMsg, pase un valor entero correspondiente al número del primer mensaje en un rango secuencial. Si se pasa un número negativo (startMsg <= 0), se utilizará el primer mensaje del buzón como inicio de la secuencia.

    En el parámetro endMsg, pase un valor entero correspondiente al número del último mensaje a incluir en un rango secuencial. Si se pasa un número negativo (endMsg <= 0), se utilizará el último mensaje del buzón como fin de secuencia.

    Result

    La función devuelve una colección de cadenas (IDs únicos).

    Ejemplo

     var $transporter : 4D.IMAPTransporter
    var $server;$boxInfo;$status : Object
    var $mailIds : Collection

    $server:=New object
    $server.host:="imap.gmail.com" //Obligatorio
    $server.port:=993
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    $transporter:=IMAP New transporter($server)

    //seleccionar buzón
    $boxInfo:=$transporter.selectBox("inbox")

    //obtener los ID de los 5 últimos mensajes recibidos
    $mailIds:=$transporter.numToID(($boxInfo.mailCount-5);$boxInfo.mailCount)

    //eliminar los mensajes del buzón actual
    $status:=$transporter.delete($mailIds)

    .removeFlags()

    Histórico
    VersiónModificaciones
    v20Soporta palabras claves personalizadas
    v18 R6Añadidos

    .removeFlags( msgIDs : Collection ; keywords : Object ) : Object
    .removeFlags( msgIDs : Text ; keywords : Object ) : Object
    .removeFlags( msgIDs : Longint ; keywords : Object ) : Object

    ParámetrosTipoDescripción
    msgIDsCollection->Colección de cadenas: identificadores únicos de mensajes (texto)
    Texto: ID único de un mensaje
    Longint (IMAP all): todos los mensajes del buzón seleccionado
    keywordsObject->Banderas de palabras claves a eliminar
    ResultObject<-Estado de la operación removeFlags

    |

    Descripción

    The .delete() function sets the "deleted" flag for the messages defined in msgsIDs or allMsgs.

    En el parámetro msgIDs, puede pasar:

    • una collection contiene los identificadores únicos de mensajes específicos, o

    • el ID único (texte) de un solo mensaje o

    • la siguiente constante (longint) para todos los mensajes del buzón seleccionado:

      ConstanteValorComentario
      IMAP all1Seleccionar todos los mensajes del buzón seleccionado

    El parámetro keywords permite definir las banderas a eliminar de msgIDs. Puede utilizar las siguientes banderas estándar, así como banderas personalizadas:

    ParámetrosTipoDescripción
    $draftBooleanTrue para eliminar el marcador "draft" del mensaje
    $seenBooleanTrue para eliminar el marcador "seen" del mensaje
    $flaggedBooleanTrue para eliminar el marcador "flagged" del mensaje
    $answeredBooleanTrue para eliminar el marcador "answered" del mensaje
    $deletedBooleanTrue para eliminar el marcador "deleted" del mensaje
    <custom flag>BooleanTrue para eliminar la bandera personalizada del mensaje

    Consulte .addFlags() para obtener más información sobre las banderas personalizados.

    • Para que una palabra clave se tenga en cuenta tiene que ser true.

    Objeto devuelto

    La función devuelve un objeto que describe el estado IMAP:

    PropiedadTipoDescripción
    successBooleanTrue si la operación tiene éxito, False en caso contrario
    statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
    errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
    [].errcodeNumberCódigo de error 4D
    [].messageTextDescripción del error 4D
    [].componentSignatureTextFirma del componente interno que ha devuelto el error

    Ejemplo

    var $options;$transporter;$boxInfo;$status : Object

    $options:=New object
    $options.host:="imap.gmail.com"
    $options.port:=993
    $options.user:="4d@gmail.com"
    $options.password:="xxxxx"

    // Crear transportador
    $transporter:=IMAP New transporter($options)

    // Seleccionar buzón
    $boxInfo:=$transporter.selectBox("INBOX")

    // Marcar todos los mensajes de INBOX como no vistos
    $flags:=New object
    $flags["$seen"]:=True
    $status:=$transporter.removeFlags(IMAP all;$flags)

    .renameBox()

    Histórico
    VersiónModificaciones
    v19Añadidos

    .renameBox( currentName : Text ; newName : Text ) : Object

    ParámetrosTipoDescripción
    currentNameText->Nombre del nuevo actual
    newNameText->Nuevo nombre del buzón
    ResultObject<-Estado de la operación renombrar

    |

    Descripción

    La función .renameBox() cambia el nombre de un buzón en el servidor IMAP. Si se intenta renombrar un buzón desde un nombre de buzón que no existe o a un nombre de buzón que ya existe, se generará un error.

    En el parámetro currentName, pase el nombre del buzón a renombrar.

    Pase el nuevo nombre del buzón en el parámetro newName.

    Objeto devuelto

    La función devuelve un objeto que describe el estado IMAP:

    PropiedadTipoDescripción
    successBooleanTrue si la operación tiene éxito, False en caso contrario
    statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
    errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
    [].errcodeNumberCódigo de error 4D
    [].messageTextDescripción del error 4D
    [].componentSignatureTextFirma del componente interno que ha devuelto el error

    Ejemplo

    Para cambiar el nombre de su buzón de "Invoices" a "Bills":

    var $pw : text
    var $options; $transporter; $status : object

    $options:=New object

    $pw:=Request("Please enter your password:")

    If(OK=1) $options.host:="imap.gmail.com"

    $options.user:="test@gmail.com"
    $options.password:=$pw

    $transporter:=IMAP New transporter($options)

    // rename mailbox
    $status:=$transporter.renameBox("Invoices"; "Bills")

    If ($status.success)
    ALERT("Mailbox renaming successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .port

    Histórico
    VersiónModificaciones
    v17 R4Añ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

    .searchMails()

    Histórico
    VersiónModificaciones
    v18 R5Añadidos

    .searchMails( searchCriteria : Text ) : Collection

    ParámetrosTipoDescripción
    searchCriteriaText->Criterio de búsqueda
    ResultCollection<-Colección de números de mensajes

    |

    Descripción

    Las coincidencias no suelen diferenciar entre mayúsculas y minúsculas

    La función .searchMails() busca los mensajes que coinciden con los searchCriteria dados en el buzón actual. .

    searchCriteria es un parámetro texto que enumera una o varias llaves de búsqueda (ver llaves-de-búsqueda-autorizadas más abajo) asociadas o no a valores a buscar. Una llave de búsqueda puede ser uno o varios elementos. Por ejemplo:

    SearchKey1 = FLAGGED
    SearchKey2 = NOT FLAGGED
    SearchKey3 = FLAGGED DRAFT

    Para obtener la información de un buzón sin cambiar el buzón actual, utilice .getBoxInfo().

    • Si el searchCriteria es una cadena null, la búsqueda será equivalente a un "seleccionar todo".
    • Si searchCriteria incluye varias llaves de búsqueda, el resultado es la intersección (función AND) de todos los mensajes que coinciden con esas llaves.
    searchCriteria = FLAGGED FROM "SMITH"

    ... devuelve todos los mensajes con el marcador \Flagged AND activado y enviados por Smith.

    • Puede utilizar los operadores OR o NOT de la siguiente manera:
    searchCriteria = OR SEEN FLAGGED

    ... devuelve todos los mensajes con el marcador \Seen O \Flagged

    searchCriteria = NOT SEEN

    ... devuelve todos los mensajes con el marcador \Seen.

    searchCriteria = HEADER CONTENT-TYPE "MIXED" NOT HEADER CONTENT-TYPE "TEXT"...

    ... devuelve los mensajes cuyo encabezado content-type contiene "Mixed" y no contiene "Text".

    searchCriteria = HEADER CONTENT-TYPE "E" NOT SUBJECT "o" NOT HEADER CONTENT-TYPE "MIXED"

    ... devuelve los mensajes cuyo encabezado content-type contiene " e " y cuyo encabezado Subject no contiene " o " y cuyo encabezado content-type no es " Mixed ".

    En cuanto a los dos últimos ejemplos, observe que el resultado de la búsqueda es diferente cuando se eliminan los paréntesis de la primera lista de llaves de búsqueda.

    • El parámetro searchCriteria puede incluir opcionalmente la instrucción [CHARSET]. Esta instrucción consiste en la palabra "CHARSET" seguida de un conjunto de caracteres definido [CHARSET] (US ASCII, ISO-8859). Indica el conjunto de caracteres de la cadena searchCriteria. Por lo tanto, debe convertir la cadena searchCriteria en el conjunto de caracteres especificado si utiliza la instrucción [CHARSET] (ver los comandos CONVERT FROM TEXT o Convert to text). Por defecto, 4D codifica la cadena de criterios searchCriteria en Quotable Printable si contiene los caracteres extendidos.
    searchCriteria = CHARSET "ISO-8859" BODY "Help"

    ... significa que los criterios de búsqueda utilizan el conjunto de caracteres iso-8859 y el servidor tendrá que convertir los criterios de búsqueda antes de buscar, si es necesario.

    Tipos de valores de búsqueda

    Las claves de búsqueda pueden solicitar el valor a buscar:

    • Search-keys with a field-name value: the field-name is the name of a header field. Example: searchCriteria = HEADER CONTENT-TYPE "MIXED"

    • Valores de tipo cadena: la cadena puede contener cualquier caracter y debe ir entre comillas. Si la cadena no contiene ningún caracter especial, como el espacio, por ejemplo, no es necesario colocarla entre comillas. Al colocar entre comillas estas cadenas se garantiza que su valor se interpretará correctamente. Example: searchCriteria = FROM "SMITH" For all search keys that use strings, a message matches the key if the string is a substring of the field. Las coincidencias no diferencian entre mayúsculas y minúsculas.

    • Search-keys with a flag value: the flag may accept one or several keywords (including standard flags), separated by spaces. Example: searchCriteria = KEYWORD \Flagged \Draft

    • Marcadores: los valores de tipo marcador (flags) aceptan una o varias palabras claves (incluyendo marcadores estándar) separados por espacios. Ejemplo: searchCriteria = KEYWORD \Flagged \Draft

    • Conjunto de mensajes: identifica un conjunto de mensajes. En el caso de los números de secuencia de los mensajes, se trata de números consecutivos desde el 1 hasta el número total de mensajes en el buzón. Los números son separados por coma; un dos puntos (:) delimita entre dos números inclusive. Examples: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13,14,15 for a mailbox with 15 messages. searchCriteria = 1:5 ANSWERED busca en la selección de mensajes 1 a 5, los mensajes que tienen el marcador \Answered. searchCriteria= 2,4 ANSWERED busca en la selección de mensajes (números de mensaje 2 y 4) los mensajes que tienen el marcador \Answered.

    Teclas de búsqueda disponibles

    ALL: todos los mensajes del buzón.
    ANSWERED: mensajes con el marcador \Answered.
    UNANSWERED: mensajes que no tienen el marcador \Answered.
    DELETED: mensajes con el marcador \Deleted.
    UNDELETED: mensajes que no tienen el marcador \Deleted.
    DRAFT: mensajes con el marcador \Draft.
    UNDRAFT: mensajes que no tienen el marcador \Draft.
    FLAGGED: mensajes con el marcador \Flagged.
    UNFLAGGED: mensajes que no tienen el marcador \Flagged.
    RECENT: mensajes que tienen el marcador \Recent.
    OLD: mensajes que no tienen el marcador \Recent.
    SEEN: mensajes que tienen el marcador \Seen.
    UNSEEN: Mensajes que no tienen el marcador \Seen.
    NEW: mensajes que tienen el marcador \Recent pero no el marcador \Seen. This is functionally equivalent to “(RECENT UNSEEN)”.
    KEYWORD flag**: Messages with the specified keyword set.
    UNKEYWORD flag**: Messages that do not have the specified keyword set.
    BEFORE date**: Messages whose internal date is earlier than the specified date.
    ON date**: Messages whose internal date is within the specified date.
    SINCE date**: Messages whose internal date is within or later than the specified date.
    SENTBEFORE date**: Messages whose Date header is earlier than the specified date.
    SENTON date**: Messages whose Date header is within the specified date.
    SENTSINCE date**: Messages whose Date header is within or later than the specified date.
    TO string**: Messages that contain the specified string in the TO header.
    FROM string**: Messages that contain the specified string in the FROM header.
    CC string**: Messages that contain the specified string in the CC header.
    BCC string**: Messages that contain the specified string in the BCC header.
    SUBJECT string**: Messages that contain the specified string in the Subject header.
    BODY string**: Messages that contain the specified string in the message body.
    TEXT string**: Messages that contain the specified string in the header or in the message body.
    HEADER field-name* *string**: Messages that have a header with the specified field-name and that contain the specified string in the field-body.
    UID message-UID**: Messages with unique identifiers corresponding to the specified unique identifier set.
    LARGER n**: Messages with a size larger than the specified number of bytes.
    SMALLER n**: Messages with a size smaller than the specified number of bytes.
    NOT search-key**: Messages that do not match the specified search key.
    OR search-key1* *search-key2**: Messages that match either search key.

    .selectBox()

    Histórico
    VersiónModificaciones
    v20id, flags, permanentFlags se devuelven
    v18 R4Añadidos

    .selectBox( name : Text { ; state : Integer } ) : Object

    ParámetrosTipoDescripción
    nameText->Nombre del buzón
    stateInteger->Estado de acceso al buzón
    ResultObject<-objeto boxInfo

    |

    Descripción

    La función .selectBox() selecciona el buzón name como el buzón actual. Esta función permite recuperar la información sobre el buzón.

    Para obtener la información de un buzón sin cambiar el buzón actual, utilice .getBoxInfo().

    En el parámetro name, pase el nombre del buzón a acceder. El nombre representa una jerarquía inequívoca de izquierda a derecha, con niveles separados por un carácter delimitador específico. El delimitador se puede recuperar con la función .getDelimiter().

    El parámetro opcional state define el tipo de acceso al buzón. Los valores posibles son:

    ConstanteValorComentario
    IMAP read only state1Se accede al buzón seleccionado con privilegios de sólo lectura. Los mensajes con la bandera "reciente" (que indica que son nuevos) no se modifican.
    IMAP read write state0Se accede al buzón seleccionado con privilegios de lectura y escritura. Los mensajes se consideran "vistos" y pierden la bandera "reciente" (que indica que son mensajes nuevos). Default value:
    • La función genera un error y devuelve Null si name designa un buzón inexistente.
    • Si no hay ninguna conexión abierta, .selectBox() abrirá una conexión.
    • Si la conexión no se ha utilizado desde el retraso de conexión designado (ver IMAP New transporter), se llama automáticamente a la función .checkConnection().

    Objeto devuelto

    El objeto boxInfo devuelto contiene las siguientes propiedades:

    PropiedadTipoDescripción
    nameTextNombre del buzón
    mailCountnumberNúmero de mensajes en el buzón
    mailRecentnumberNúmero de mensajes con la bandera "recent"
    idtextId. único del buzón
    flagstextLista de banderas utilizadas actualmente para el buzón, separadas por espacios
    permanentFlagstextLista de banderas que el cliente puede cambiar permanentemente (excepto el indicador \Recent, que gestiona el servidor IMAP), separados por espacios
    info

    Si la cadena permanentFlags incluye la bandera especial *, significa que el servidor soporta banderas personalizadas.

    Ejemplo

     var $server; $boxinfo : Object
    $server:=New object
    $server.host:="imap.gmail.com" //Mandatory
    $server.user:="4d@gmail.com"
    $server.password:="XXXXXXXX"

    var $transporter : 4D.IMAPTransporter
    $transporter:=IMAP New transporter($server)
    $boxInfo:=$transporter.selectBox("INBOX")

    .subscribe()

    Histórico
    VersiónModificaciones
    v19Añadidos

    .subscribe( name : Text ) : Object

    ParámetrosTipoDescripción
    nameText->Nombre del buzón
    ResultObject<-Estado de la operación subscribe

    |

    Descripción

    La función .subscribe() permite añadir o eliminar el buzón especificado al conjunto de buzones "suscritos" del servidor IMAP. De este modo, puede optar por acotar una gran lista de buzones disponibles suscribiéndose a los que habitualmente consulta.

    En el parámetro name, pase el nombre del buzón a añadir (suscribir) a sus buzones "suscritos".

    Objeto devuelto

    La función devuelve un objeto que describe el estado IMAP:

    PropiedadTipoDescripción
    successBooleanTrue si la operación tiene éxito, False en caso contrario
    statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
    errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
    [].errcodeNumberCódigo de error 4D
    [].messageTextDescripción del error 4D
    [].componentSignatureTextFirma del componente interno que ha devuelto el error

    Ejemplo

    Para suscribirse al buzón "Atlas Corp" en la jerarquía "Bills":

    var $pw; $name : text
    var $options; $transporter; $status : object

    $options:=New object

    $pw:=Request("Please enter your password:")

    If(OK=1) $options.host:="imap.gmail.com"
    $options.user:="test@gmail.com"
    $options.password:=$pw

    $transporter:=IMAP New transporter($options)

    $name:="Bills"+$transporter.getDelimiter()+"Atlas Corp"
    $status:=$transporter.subscribe($name)

    If ($status.success)
    ALERT("Mailbox subscription successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .unsubscribe()

    Histórico
    VersiónModificaciones
    v19Añadidos

    .unsubscribe( name : Text ) : Object

    ParámetrosTipoDescripción
    nameText->Nombre del buzón
    ResultObject<-Estado de la operación unsubscribe

    |

    Descripción

    La función .unsubscribe() elimina un buzón de un conjunto de buzones suscritos. Esto le permite reducir el número de buzones que suele ver.

    En el parámetro name, pase el nombre del buzón a eliminar (darse de baja) de sus buzones activos.

    Objeto devuelto

    La función devuelve un objeto que describe el estado IMAP:

    PropiedadTipoDescripción
    successBooleanTrue si la operación tiene éxito, False en caso contrario
    statusTextTextMensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D
    errorsCollectionPila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP)
    [].errcodeNumberCódigo de error 4D
    [].messageTextDescripción del error 4D
    [].componentSignatureTextFirma del componente interno que ha devuelto el error

    Ejemplo

    Para desuscribirse del buzón "Atlas Corp" en la jerarquía "Bills":

    var $pw; $name : text
    var $options; $transporter; $status : object

    $options:=New object

    $pw:=Request("Please enter your password:")

    If(OK=1) $options.host:="imap.gmail.com"
    $options.user:="test@gmail.com"
    $options.password:=$pw

    $transporter:=IMAP New transporter($options)

    $name:="Bills"+$transporter.getDelimiter()+"Atlas Corp"
    $status:=$transporter.unsubscribe($name)

    If ($status.success)
    ALERT("Mailbox unsubscription successful!")
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if
    Else
    ALERT("Error: "+$status.statusText)
    End if
    End if

    .user

    Histórico
    VersiónModificaciones
    v17 R4Añadidos

    .user : Text

    Descripción

    La propiedad .user contiene el nombre del usuario utilizado para la autenticación en el servidor de correo.