IMAPTransporter
La clase IMAPTransporter
le permite recuperar mensajes de un servidor de correo 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 se autoriza a 4D establecer una conexión no cifrada |
.addFlags( msgIDs : Collection ; keywords : Object ) : Object .addFlags( msgIDs : Text ; keywords : Object ) : Object .addFlags( msgIDs : Longint ; keywords : Object ) : Object agrega banderas a los msgIDs para las keywords 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 comprueba la conexión utilizando la información almacenada en el objeto transporter |
.checkConnectionDelay : Integer el tiempo máximo (en segundos) permitido antes de verificar la conexión con el servidor |
.connectionTimeOut : Integer el tiempo máximo de espera (en segundos) permitido 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 en la destinationBox en el servidor IMAP |
.createBox( name : Text ) : Object crea un buzón con el nombre dado |
.delete( msgsIDs : Collection ) : Object .delete( allMsgs : Integer ) : Object define el marcador "deleted" para los mensajes definidos en msgsIDs o allMsgs |
.deleteBox( name : Text ) : Object elimina permanentemente el buzón de correo con el name dado del servidor IMAP |
.expunge() : Object elimina todos los mensajes con el marcador "deleted" del servidor de correo IMAP. |
.getBoxInfo( { name : Text }) : Object devuelve un objeto boxInfo correspondiente al buzón de correo actual o el buzón de correo name |
.getBoxList( { parameters : Object } ) : Collection devuelve una colección de bandejas de entrada que describe todas las bandejas de entrada disponibles |
.getDelimiter() : Text devuelve el caracter utilizado para delimitar 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 devuelve un objeto que contiene una colección de objetos Email |
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob .getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob devuelve un BLOB con el contenido MIME del mensaje correspondiente al 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 registro extendido definido (si existe) 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 a la destinationBox del servidor IMAP |
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection convierte los números de secuencia en IDs ú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 elimina las banderas de los msgIDs para las keywords especificadas |
.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 coincidan con los criterios de búsqueda searchCriteria dados en el buzón actual |
.selectBox( name : Text { ; state : Integer } ) : Object selecciona el buzón name como buzón actual |
.subscribe( name : Text ) : Object permite añadir 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 de usuario utilizado para la autenticación en el servidor de correo |
4D.IMAPTransporter.new()
4D.IMAPTransporter.new( server : Object ) : 4D.IMAPTransporter
Parámetros | Tipo | Descripción | |
---|---|---|---|
server | Object | -> | Información del servidor de correo |
Result | 4D.IMAPTransporter | <- | Objeto transportador IMAP |
Descripción
La función 4D.IMAPTransporter.new()
crea y devuelve un nuevo objeto de tipo 4D.IMAPTransporter
. Es idéntico al comando IMAP New transporter
(acceso directo).
.acceptUnsecureConnection
Historia
Lanzamiento | Modificaciones |
---|---|
17 R4 | Añadidos |
.acceptUnsecureConnection : Boolean
Descripción
La propiedad .acceptUnsecureConnection
contiene True si se autoriza a 4D establecer una conexión no cifrada cuando la conexión cifrada 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()
Historia
Lanzamiento | Modificaciones |
---|---|
20 | Soporta palabras claves personalizadas |
18 R6 | Añadidos |
.addFlags( msgIDs : Collection ; keywords : Object ) : Object
.addFlags( msgIDs : Text ; keywords : Object ) : Object
.addFlags( msgIDs : Longint ; keywords : Object ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgIDs | Collection | -> | 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 |
keywords | Object | -> | Banderas de palabras claves a añadir |
Resultado | Object | <- | Estado de la operación addFlags |
Descripción
La función .addFlags()
agrega banderas a los msgIDs
para las keywords
especificadas.
En el parámetro msgIDs
, puedes pasar:
- una colección que contiene los IDs únicos de mensajes específicos o
- el ID único (text) de un solo mensaje o
- la siguiente constante (longint) para todos los mensajes del buzón seleccionado:
Constante | Valor | Comentario |
---|---|---|
IMAP all | 1 | Seleccionar todos los mensajes del buzón seleccionado |
El parámetro keywords
permite definir las banderas a añadir 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):
Propiedad | Tipo | Descripción |
---|---|---|
$draft | Boolean | True para añadir el marcador "draft" al mensaje |
$seen | Boolean | True para añadir el marcador "seen" al mensaje |
$flagged | Boolean | True para añadir el marcador "flagged" al mensaje |
$answered | Boolean | True para añadir el marcador "answered" al mensaje |
$deleted | Boolean | True para añadir el marcador "deleted" al mensaje |
<custom flag> | Boolean | True 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R6 | Añadidos |
.append( mailObj : Object ; destinationBox : Text ; options : Object ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
mailObj | Object | -> | Objeto Email |
destinationBox | Text | -> | Buzón para recibir el objeto Email |
options | Object | -> | Objeto que contiene información del charset |
Result | Object | <- | 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. Para obtener una descripción completa de las propiedades del correo, consulte objeto Email. La función .append()
soporta los marcadores de palabras claves en el atributo keywords
de objetos Email.
El parámetro opcional destinationBox
permite pasar el nombre de un 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 conjunto de caracteres y la codificación para partes específicas del correo electrónico. Propiedades disponibles:
Propiedad | Tipo | Descripción |
---|---|---|
headerCharset | Text | Charset 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 |
bodyCharset | Text | Charset 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:
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 |
Objeto devuelto
La función devuelve un objeto que describe el estado IMAP:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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//flag the message as read
$msg.keywords["$draft"]:=True//flag the message as a draft
$status:=$imap.append($msg; "Drafts")
.authenticationMode
Historia
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 | IMAP authentication CRAM MD5 | Autenticación utilizando el protocolo CRAM-MD5 |
LOGIN | IMAP authentication login | Autenticación utilizando el protocolo LOGIN |
OAUTH2 | IMAP authentication OAUTH2 | Autenticación utilizando el protocolo OAuth2 |
PLAIN | IMAP authentication plain | Autenticación utilizando el protocolo PLAIN |
.checkConnection()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R4 | Añadidos |
.checkConnection() : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Object | <- | 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 | 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 |
.checkConnectionDelay
Historia
Lanzamiento | Modificaciones |
---|---|
18 R4 | Añadidos |
.checkConnectionDelay : Integer
Descripción
La propiedad .checkConnectionDelay
contiene el tiempo máximo (en segundos) permitido antes de verificar 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
Historia
Lanzamiento | Modificaciones |
---|---|
17 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. 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()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R5 | Añadidos |
.copy( msgsIDs : Collection ; destinationBox : Text ) : Object
.copy( allMsgs : Integer ; destinationBox : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgsIDs | Collection | -> | Colección de identificadores únicos de mensajes (cadenas) |
allMsgs | Integer | -> | IMAP all : todos los mensajes en el buzón seleccionado |
destinationBox | Text | -> | Buzón para recibir mensajes copiados |
Result | Object | <- | Estado de la operación de copia |
Descripción
La función .copy()
copia los mensajes definidos por msgsIDs o allMsgs en la destinationBox en el servidor IMAP.
Puede pasar:
- en el parámetro msgsIDs, una colección que 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.createBox( name : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
name | Text | -> | Nombre del nuevo buzón |
Result | Object | <- | Estado de la operación de creación del buzón |
Descripción
La función .createBox()
crea un buzón con el nombre 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
, pase el nombre del nuevo buzón.
Objeto devuelto
La función devuelve un objeto que describe el estado IMAP:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
Ejemplo
Para crear un nuevo buzón "Invoices":
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)
$status:=$transporter.createBox("Invoices")
If ($status.success)
ALERT("Mailbox creation successful!")
Else
ALERT("Error: "+$status.statusText)
End if
End if
.delete()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R5 | Añadidos |
.delete( msgsIDs : Collection ) : Object
.delete( allMsgs : Integer ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgsIDs | Collection | -> | Colección de identificadores únicos de mensajes (cadenas) |
allMsgs | Integer | -> | IMAP all : todos los mensajes en el buzón seleccionado |
Result | Object | <- | Estado de la operación de eliminación |
Descripción
La función .delete()
define el marcador "deleted" 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 constanteIMAP all
(entero) para borrar todos los mensajes en el buzón de correo seleccionado.
La ejecución de esta función no elimina realmente los mensajes. Los mensajes con el marcador "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 el objeto transporter (creado con IMAP New transporter) es destruido.
Objeto devuelto
La función devuelve un objeto que describe el estado IMAP:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.deleteBox( name : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
name | Text | -> | Nombre del buzón a eliminar |
Result | Object | <- | Estado de la operación de eliminación del buzón |
Descripción
La función .deleteBox()
elimina permanentemente el buzón de correo 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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)
// eliminar buzón
$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
.expunge()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R6 | Añadidos |
.expunge() : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Object | <- | Estado de la operación expunge |
Descripción
La función .expunge()
elimina todos los mensajes con el marcador "deleted" del servidor de correo IMAP. El marcador "deleted" puede definirse con los métodos delete()
o addFlags()
.
Objeto devuelto
La función devuelve un objeto que describe el estado IMAP:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
20 | *se devuelve el id |
18 R5 | name es opcional |
18 R4 | Añadidos |
.getBoxInfo( { name : Text }) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
name | Text | -> | Nombre del buzón |
Result | Object | <- | objeto boxInfo |
Descripción
La función .getBoxInfo()
devuelve un objeto boxInfo
correspondiente al buzón de correo actual o el buzón de correo name. 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 encontrar 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:
Propiedad | Tipo | Descripción |
---|---|---|
name | Text | Nombre del buzón |
mailCount | Number | Número de mensajes en el buzón |
mailRecent | Number | Número de mensajes con el marcador "reciente" (que indica los mensajes nuevos) |
id | text | Id. único del buzón |
mailUnseen | Number | Número de mensajes marcados como "unseen" |
Ejemplo
var $transporter : 4D.IMAPTransporter
$transporter:=IMAP New transporter($server)
$info:=$transporter.getBoxInfo("INBOX")
ALERT("INBOX contains "+String($info.mailRecent)+" recent emails.")
.getBoxList()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R4 | Añadidos |
19 | Añadir parámetro isSubscribed |
.getBoxList( { parameters : Object } ) : Collection
Parámetros | Tipo | Descripción | |
---|---|---|---|
parameters | Object | -> | Objeto de parámetro |
Result | Collection | <- | Colección de objetos mailbox |
Descripción
La función .getBoxList()
devuelve una colección de bandejas de entrada que describe todas las bandejas de entrada 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:
Propiedad | Tipo | Descripción |
---|---|---|
isSubscribed | Boolean | |
names | Collection | Colección de objetos que contienen un atributo "name" o colección de textos que contienen los nombres de las cajas |
withBoxProperties | Boolean | Si true (por defecto): agrega los atributos selectable , inferior e interesting al objeto de resultado. Si es false, se omiten estos atributos. |
withBoxInfo | Boolean | El valor por defecto es false. Si true, agrega los atributos mailCount , mailRecent e id al objeto resultado. |
Result
Cada objeto de la colección devuelta contiene las siguientes propiedades:
Propiedad | Tipo | Descripción |
---|---|---|
[].name | Text | Nombre del buzón. Devuelto si withBoxProperties=true o withBoxInfo=true |
[].selectable | Boolean | Indica si los derechos de acceso permiten o no seleccionar el buzón de correo:
|
[].inferior | Boolean | Indica si los derechos de acceso permiten o no crear una jerarquía inferior en el buzón:
|
[].interesting | Boolean | Indica si el buzón ha sido marcado como "interesante" por el servidor:
|
[].mailCount | Number | Número de mensajes en el buzón. Devuelto si withBoxInfo=true |
[].mailRecent | Number | Número de mensajes marcados como "recent" (indicando nuevos mensajes). Devuelto si withBoxInfo=true |
[].mailUnseen | Number | Número de mensajes marcados como "unseen". Devuelto si withBoxInfo=true |
[].id | Text | Identificador único del buzón. Devuelto si withBoxInfo=true |
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 ha sido utilizada desde el retraso de conexión designado (ver
IMAP New transporter
), 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
.getDelimiter()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R4 | Añadidos |
.getDelimiter() : Text
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Text | <- | Caracter delimitador de jerarquía |
Descripción
La función .getDelimiter()
devuelve el caracter utilizado para delimitar niveles de jerarquía en el nombre del buzón.
El delimitador es un caracter que puede utilizarse para:
- crear buzones de nivel inferior
- buscar más arriba o más abajo en la jerarquía del buzón
Resultado
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 la duración máxima definida, 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
.getMail()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R4 | Añadidos |
.getMail( msgNumber: Integer { ; options : Object } ) : Object
.getMail( msgID: Text { ; options : Object } ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgNumber | Integer | -> | Número de secuencia del mensaje |
msgID | Text | -> | ID único del mensaje |
options | Object | -> | Instrucciones sobre la gestión de mensajes |
Result | Object | <- | Objet 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:
Propiedad | Tipo | Descripción |
---|---|---|
updateSeen | boolean | Si 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 |
withBody | boolean | Pase 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 el último buzón especificado con.selectBox()
`.
Result
.getMail()
devuelve un objeto Email
con las siguientes propiedades IMAP específicas: 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()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R5 | Añadidos |
.getMails( ids : Collection { ; options : Object } ) : Object
.getMails( startMsg : Integer ; endMsg : Integer { ; options : Object } ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
ids | Collection | -> | Colección de identificadores de mensajes |
startMsg | Integer | -> | Número de secuencia del primer mensaje |
endMsg | Integer | -> | Número de secuencia del último mensaje |
options | Object | -> | Instrucciones sobre la gestión de mensajes |
Result | Object | <- | Objeto que contiene
|
Descripción
La función .getMails()
devuelve un objeto que contiene una colección de objetos Email
.
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. Puedes obtener los IDs con .getMail()
.
El parámetro opcional options permite definir las partes de los mensajes a devolver. Consulte la tabla Options 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 que se 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.
Options
Propiedad | Tipo | Descripción |
---|---|---|
updateSeen | Boolean | Si 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 |
withBody | Boolean | Pase 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 el último buzón especificado con.selectBox()
.
Result
.getMails()
devuelve un objeto que contiene las siguientes colecciones:
Propiedad | Tipo | Descripción |
---|---|---|
lista | Collection | Colección de objetos Email . Si no se encuentran objetos Email, se devuelve una colección vacía. |
notFound | Collection | Colección de:
|
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()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R4 | Añadidos |
.getMIMEAsBlob( msgNumber : Integer { ; updateSeen : Boolean } ) : Blob
.getMIMEAsBlob( msgID : Text { ; updateSeen : Boolean } ) : Blob
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgNumber | Integer | -> | Número de secuencia del mensaje |
msgID | Text | -> | ID único del mensaje |
updateSeen | Boolean | -> | Si True, el mensaje se marca como "visto" en el buzón. Si False, el mensaje se deja igual. |
Result | BLOB | <- | 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 al 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 - para dejar intacto el estado "visto" del mensaje
- La función devuelve un BLOB vacío si msgNumber o msgID* designa un mensaje inexistente,
- Si no se selecciona ningún buzón con el comando
.selectBox()
, se genera un error,- Si no hay ninguna conexión abierta,
.getMIMEAsBlob()
abrirá una conexión el último buzón especificado con.selectBox()
.
Resultado
.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
Historia
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).
.logFile
Historia
Lanzamiento | Modificaciones |
---|---|
17 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. Puede ser relativo (a la carpeta actual Logs) o absoluto.
A diferencia de los archivos log habituales (activados mediante el comando SET DATABASE PARAMETER
), los archivos log extendidos almacenan el contenido MIME de todos los correos enviados y no tienen límite de tamaño. Para más información sobre los archivos de registro extendidos, consulte:
- SMTP connections - 4DSMTPLog.txt
- POP3 connections - 4DPOP3Log.txt
- IMAP connections - 4DIMAPLog.txt
.move()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R5 | Añadidos |
.move( msgsIDs : Collection ; destinationBox : Text ) : Object
.move( allMsgs : Integer ; destinationBox : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgsIDs | Collection | -> | Colección de identificadores únicos de mensajes (cadenas) |
allMsgs | Integer | -> | IMAP all : todos los mensajes en el buzón seleccionado |
destinationBox | Text | -> | Buzón para recibir los mensajes desplazados |
Result | Object | <- | Estado de la operación de desplazamiento |
Descripción
La función .move()
mueve los mensajes definidos por msgsIDs o allMsgs a la destinationBox del 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 desplazar 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 sólo es compatible con los servidores IMAP que cumplen la RFC 8474.
Objeto devuelto
La función devuelve un objeto que describe el estado IMAP:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R5 | Añadidos |
.numToID( startMsg : Integer ; endMsg : Integer ) : Collection
Parámetros | Tipo | Descripción | |
---|---|---|---|
startMsg | Integer | -> | Número de secuencia del primer mensaje |
endMsg | Integer | -> | Número de secuencia del último mensaje |
Result | Collection | <- | Colección de identificadores de mensajes únicos |
Descripción
La función .numToID()
convierte los números de secuencia en IDs ú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 que se 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()
Historia
Lanzamiento | Modificaciones |
---|---|
20 | Soporta palabras claves personalizadas |
18 R6 | Añadidos |
.removeFlags( msgIDs : Collection ; keywords : Object ) : Object
.removeFlags( msgIDs : Text ; keywords : Object ) : Object
.removeFlags( msgIDs : Longint ; keywords : Object ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
msgIDs | Collection | -> | 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 |
keywords | Object | -> | Banderas de palabras claves a eliminar |
Result | Object | <- | Estado de la operación removeFlags |
Descripción
La función .removeFlags()
elimina las banderas de los msgIDs
para las keywords
especificadas.
En el parámetro msgIDs
, puede pasar:
- una colección que contiene los IDs únicos de mensajes específicos o
- el ID único (text) de un solo mensaje o
- la siguiente constante (longint) para todos los mensajes del buzón seleccionado:
Constante | Valor | Comentario |
---|---|---|
IMAP all | 1 | Seleccionar 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ámetros | Tipo | Descripción |
---|---|---|
$draft | Boolean | True para eliminar el marcador "draft" del mensaje |
$seen | Boolean | True para eliminar el marcador "seen" del mensaje |
$flagged | Boolean | True para eliminar el marcador "flagged" del mensaje |
$answered | Boolean | True para eliminar el marcador "answered" del mensaje |
$deleted | Boolean | True para eliminar el marcador "deleted" del mensaje |
<custom flag> | Boolean | True para eliminar la bandera personalizada del mensaje |
Consulte .addFlags() para obtener más información sobre las banderas personalizadas.
- 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.renameBox( currentName : Text ; newName : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
currentName | Text | -> | Nombre del nuevo actual |
newName | Text | -> | Nuevo nombre del buzón |
Result | Object | <- | 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
Ejemplo
Para cambiar el nombre de su buzón de "Invoices" a "Bills":
var $pw : text
var $options; $transporter; $status : object
$options:=Nuevo objeto
$pw:=Request("Por favor, introduzca su contraseña:")
If(OK=1) $options.host:="imap.gmail.com"
$options.user:="test@gmail.com"
$options.password:=$pw
$transporter:=IMAP New transporter($options)
// renombrar buzón
$status:=$transporter.renameBox("Facturas"; "Facturas")
If ($status.success)
ALERT("¡Cambio de nombre de buzón correcto!")
Else
ALERT("Error: "+$status.statusText)
End if
End if
.port
Historia
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
.searchMails()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R5 | Añadidos |
.searchMails( searchCriteria : Text ) : Collection
Parámetros | Tipo | Descripción | |
---|---|---|---|
searchCriteria | Text | -> | Criterio de búsqueda |
Result | Collection | <- | Colección de números de mensajes |
Descripción
Esta función se basa en la especificación del protocolo IMAP.
La función .searchMails()
busca los mensajes que coincidan con los criterios de búsqueda searchCriteria dados en el buzón actual. searchCriteria consiste en una o más llaves de búsqueda.
searchCriteria es un parámetro texto que enumera una o varias llaves de búsqueda (ver llaves de búsqueda autorizadas 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 al conjunto de caracteres especificado si utiliza la instrucción [CHARSET] (consulte los comandos
CONVERT FROM TEXT
oConvert 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:
-
Valores de tipo fecha: los valores de tipo fecha se colocan en cadenas con el siguiente formato: date-day+"-"+date-month+"-"+date-year donde date-day indica la fecha del día del mes (2 caracteres como máximo), date-month indica el mes (Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Dec) y date-year indica el año (4 dígitos). Ejemplo:
searchCriteria = SENTBEFORE 1-Feb-2020
(una fecha no suele necesitar comillas, ya que no contiene caracteres especiales) -
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. Ejemplo:
searchCriteria = FROM "SMITH"
Para todas las llaves de búsqueda que utilizan cadenas, un mensaje coincide con la llave si la cadena es una subcadena del campo. Las coincidencias no diferencian entre mayúsculas y minúsculas. -
Llaves de búsqueda con un valor nombres de campo: los valores de tipo nombre de campo contienen el nombre de un campo de encabezado. Ejemplo:
searchCriteria = HEADER CONTENT-TYPE "MIXED"
-
Llaves de búsqueda con 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
-
Llaves de búsqueda con un valor de 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. Ejemplos:
2,4:7,9,12:*
es2,4,5,6,7,9,12,13,14,15
para un buzón con 15 mensajes.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 indicador \Answered activado.
Teclas de búsqueda disponibles
ALL: todos los mensajes en el buzón.
ANSWERED: mensajes con el indicador \Answered activado.
UNANSWERED: mensajes que no tienen el indicador \Answered activo.
DELETED: mensajes con el indicador \Deleted activado.
UNDELETED: mensajes que no tienen el indicador \Deleted activado.
DRAFT: mensajes con el indicador \Draft activado.
UNDRAFT: mensajes que no tienen el indicador \Draft activado.
FLAGGED: mensajes con el indicador \Flagged activado.
UNFLAGGED: mensajes que no tienen el indicador \Flagged activado.
RECENT: mensajes que tienen el indicador \Recent activado.
OLD: mensajes que no tienen el indicador \Recent activado.
SEEN: mensajes que tienen el indicador \Seen activo.
UNSEEN: mensajes que no tienen el indicador \Seen activo.
NEW: mensajes que tienen el indicador \Recent activado pero no el indicador \Seen. Esto es funcionalmente equivalente a “(RECENT UNSEEN)”.
KEYWORD flag: mensajes con el conjunto de palabras clave especificado.
UNKEYWORD flag: mensajes que no tienen la palabra clave especificada.
BEFORE date: mensajes cuya fecha interna es anterior a la fecha especificada.
ON date: mensajes cuya fecha interna está dentro de la fecha especificada.
SINCE date: mensajes cuya fecha interna es anterior o posterior a la fecha especificada.
SENTBEFORE date: mensajes cuyo encabezado Date es anterior a la fecha especificada.
SENTON date: mensajes cuyo encabezado Date está dentro de la fecha especificada.
SENTSINCE date: mensajes cuyo encabezado Date está dentro o posterior a la fecha especificada.
TO string: mensajes que contienen la cadena especificada en el encabezado TO.
FROM string: mensajes que contienen la cadena especificada en el encabezado FROM.
CC string: mensajes que contienen la cadena especificada en el encabezado CC.
BCC string: mensajes que contienen la cadena especificada en el encabezado BCC.
SUBJECT string: mensajes que contienen la cadena especificada en el encabezado Asunto.
BODY string: mensajes que contienen la cadena especificada en el cuerpo del mensaje.
TEXT string: mensajes que contienen la cadena especificada en el encabezado o en el cuerpo del mensaje.
HEADER field-name string: mensajes que tienen un encabezado con el nombre de campo especificado y que contiene la cadena especificada en el field-body.
UID message-UID: mensajes con identificadores únicos correspondientes al conjunto de identificadores únicos especificados.
LARGER n: mensajes con un tamaño superior al número de bytes especificado.
SMALLER n: mensajes con un tamaño menor que el número especificado de bytes.
NOT search-key: mensajes que no coinciden con la llave de búsqueda especificada.
OR search-key1 search-key2: mensajes que corresponden con cualquiera de las palabras clave de búsqueda.
.selectBox()
Historia
Lanzamiento | Modificaciones |
---|---|
20 | id, flags, permanentFlags se devuelven |
18 R4 | Añadidos |
.selectBox( name : Text { ; state : Integer } ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
name | Text | -> | Nombre del buzón |
state | Integer | -> | Estado de acceso al buzón |
Result | Object | <- | objeto boxInfo |
Descripción
La función .selectBox()
selecciona el buzón name como 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 encontrar con la función .getDelimiter()
.
El parámetro opcional state define el tipo de acceso al buzón. Los valores posibles son:
Constante | Valor | Comentario |
---|---|---|
IMAP read only state | 1 | Se 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 state | 0 | Se 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 ha sido usada desde la demora de conexión designada (ver
IMAP New transporter
), la función.checkConnection()
es llamada automáticamente.
Objeto devuelto
El objeto boxInfo
devuelto contiene las siguientes propiedades:
Propiedad | Tipo | Descripción |
---|---|---|
name | Text | Nombre del buzón |
mailCount | number | Número de mensajes en el buzón |
mailRecent | number | Número de mensajes con la bandera "recent" |
id | text | Id. único del buzón |
flags | text | Lista de banderas utilizadas actualmente para el buzón, separadas por espacios |
permanentFlags | text | Lista de banderas que el cliente puede cambiar permanentemente (excepto el indicador \Recent, que gestiona el servidor IMAP), separados por espacios |
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()
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.subscribe( name : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
name | Text | -> | Nombre del buzón |
Result | Object | <- | Estado de la operación subscribe |
Descripción
La función .subscribe()
permite añadir 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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
.unsubscribe()
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.unsubscribe( name : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
name | Text | -> | Nombre del buzón |
Result | Object | <- | 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:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si la operación tiene éxito, False en caso contrario | |
statusText | Text | Mensaje de estado devuelto por el servidor IMAP, o último error devuelto en la pila de errores 4D | |
errors | Collection | Pila de errores 4D (no se devuelve si se recibe una respuesta del servidor IMAP) | |
[].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 |
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
.user
Historia
Lanzamiento | Modificaciones |
---|---|
17 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.