4D Internet Commands v16

Comandos IMAP4, Introducción

Inicio

 
4D Internet Commands v16
Comandos IMAP4, Introducción

Comandos IMAP4, Introducción  


 

 

El conjunto de comandos IMAP4 le permite a su base de datos acceder y manipular mensajes de correo electrónico en un servidor de correo IMAP y recuperar mensajes electrónicos de su servidor IMAP. Los comandos IMAP son compatibles con el protocolo Internet Message Access, versión 4 revisión 1 (IMAP4 rev1), definido por RFC 2060. IMAP4 rev1 permite la gestión de carpetas de mensajes a distancia, llamados "buzones", de la misma manera que los buzones locales.

Los comandos IMAP incluyen operaciones para crear, borrar y renombrar buzones, verificar la presencia de nuevos mensajes, eliminar permanentemente mensajes, asignar y borrar marcadores (flags) mensajes de búsqueda; y recuperar partes de mensajes.

Conexión: se refiere a la secuencia completa de interacciones cliente/servidor IMAP, desde la conexión de red inicial (IMAP_Login) hasta el final de la conexión (IMAP_Logout).

Sesión: se refiere a la secuencia de interacciones cliente/servidor IMAP desde el momento en que se selecciona un buzón de correo (IMAP_SetCurrentMB) hasta el final de la conexión (IMAP_SetCurrentMB, IMAP_CloseCurrentMB) o hasta que se cierra la conexión (IMAP_Logout).

  • Inicialización de la comunicación TCP: IT_MacTCPInit (el comando IT_PPPConnect debe llamarse antes de IT_MacTCPInit en el caso de una conexión PPP).
  • Apertura de una conexión: IMAP_Login
  • Gestión de buzones: listar, crear, eliminar, renombrar, suscribirse o darse de baja, obtener el estado de los parámetros.
  • Apertura de una sesión al definir el buzón de trabajo actual: IMAP_SetCurrentMB.
    Una vez se establece el buzón actual, puede administrar los mensajes que contiene.
  • Gestión de mensajes: listar, descargar o eliminar mensajes; listar los marcadores de los mensajes, modificar los marcadores de los mensajes, copia a otro buzón, buscar y recuperar partes de mensajes sin descarga, etc.
  • Una vez que haya terminado de trabajar con los mensajes del buzón actual, puede cerrar la sesión o abrir una nueva definiendo otro buzón actual. En todos los casos, el servidor IMAP actualiza de forma permanente sus mensajes. Por ejemplo, se eliminarán todos los mensajes con el marcador \Deleted.
  • Una vez haya terminado, debe cerrar la sesión. Cierre de una conexión: IMAP_Logout.
  • Otras operaciones: definición de las preferencias, capacidad, verificación de la conexión y reinicialización del temporizador de inactividad antes de cerrar la sesión automáticamente en el servidor IMAP.

Los comandos IMAP se dividen en dos secciones: IC IMAP Review Mail (intercambios con el servidor IMAP) e IC Downloaded Mail (tratamiento local). Estos comandos se han separado para mostrar los diferentes métodos de lectura de correo electrónico. Al leer el correo electrónico desde un servidor IMAP, los mensajes (o información de los mensajes) pueden importarse en las estructuras 4D (variables, campos, arrays) o descargarse en el disco. Esta sección describe las posibilidades ofrecidas por 4D Internet Commands para leer los mensajes desde un servidor IMAP.

El tamaño de los archivos a descargar determinan el uso de un modo u otro. Por ejemplo, un solo correo electrónico  que contiene un archivo adjunto de 5 MB puede fácilmente superar la capacidad de almacenamiento de la base de datos. Sólo una imagen 4D o un campo BLOB es capaz de almacenar algo de este tamaño, sin embargo, la conversión de un mensaje o archivo adjunto a este formato no es muy eficiente ya que el acceso a la imagen o BLOB implica movilizar grandes recursos de memoria para acceder a la imagen o al BLOB. Para resolver este problema, el comando IMAP_Download transfiere los mensajes del servidor IMAP al disco duro del usuario.

Una vez importado al disco, la sección "IC Downloaded Mail" detalla los comandos que se utilizan para manipular archivos locales.

Un buzón de correo IMAP puede ser manejado como una carpeta y puede contener archivos y/o subcarpetas. Del mismo modo, un buzón de correo puede contener mensajes y/o sub buzones.

Un buzón se accede utilizando su nombre jerárquico completo. Según el servidor IMAP, cada nivel jerárquico está separado por un separador de jerarquía (un separador se devuelve utilizando el comando IMAP_ListMBs).

Puede utilizar el separador para crear buzones hijos y para buscar los niveles más altos o más bajos de la jerarquía de nombres. Todos los hijos de un nivel jerárquico principal utilizan el mismo carácter separador

Nota: los mensajes sólo se pueden administrar una vez se ha seleccionado el buzón de trabajo actual (IMAP_SetCurrentMB).

Cada cuenta puede tener uno o varios buzones.

Los nombres de buzones tienen en cuenta las mayúsculas y minúsculas, por lo tanto, no se pueden crear dos buzones con nombres que difieran sólo por tener mayúsculas o minúsculas.

El buzón INBOX es un caso particular: existe en todas las cuentas y se utiliza para almacenar los mensajes recibidos. El INBOX se crea automáticamente cada vez que una cuenta se configura.

Un usuario no puede eliminar el INBOX pero sí puede cambiar su nombre. Si decide cambiar el nombre, se crea inmediatamente un nuevo INBOX vacío. El nombre INBOX no tiene en cuenta las mayúsculas y minúsculas.

Algunos atributos del buzón, como el número total de mensajes o de mensajes nuevos, pueden obtenerse, incluso si el buzón no es el actual.

Para el uso de los comandos IMAP, es importante entender completamente los parámetros numMsg e IDunico.

numMsg es el número de un mensaje en el buzón en el momento que se ejecuta el comando IMAP_SetCurrentMB.

Una vez seleccionado un buzón actual, los mensajes en el buzón se numeran del 1 hasta el número total de elementos en el buzón. Los números se asignan en función del orden en que los mensajes fueron recibidos en el buzón, siendo 1 el más antiguo. Los números asignados a los mensajes sólo son válidos desde el momento de seleccionar el buzón de trabajo actual (IMAP_SetCurrentMB) hasta que se cierra (IMAP_CloseCurrentMB, IMAP_SetCurrentMB o IMAP_Logout).

Cuando el buzón se cierra, todos los mensajes marcados para eliminación se borran

Cuando el usuario inicia sesión de nuevo en el servidor IMAP, los mensajes presentes en el buzón se numeran de nuevo del 1 al X. Por ejemplo, si hay 10 mensajes en el buzón y si los mensajes del 1 al 5 se eliminan cuando el usuario vuelve a abrir el buzón, los antiguos mensajes 6-10 se han vuelto los mensajes del 1 al 5.

Por ejemplo, veamos el siguiente ejemplo: conéctese a un servidor IMAP y obtenga la siguiente lista de mensajes:

numMsgIDunicoFechaDeAsunto
1100051 Jul 2001 ...danw@acme.comClientes potenciales...
2100081 Jul 2001 ...frank@acme.comOrden de licencia en sitio
3100123 Jul 2001 ...joe@acme.com¿Alguien quiere ir a almorzar?
4200004 Jul 2002 ...kelly@acme.comSu esposa llamó...
5200014 Jul 2002 ...track@fedex.comSeguimiento FedEx

Durante esta sesión, usted borra los mensajes 3 y 4. Al cerrar el buzón de trabajo actual, se realizan las eliminaciones. Cuando vuelva al servidor, la lista de mensajes se reenumerará así:

numMsgIDunicoFechaDeAsunto
1100051 Jul 2001 ...danw@acme.comClientes potenciales...
2100081 Jul 2001 ...frank@acme.comOrden de licencia en sitio
3200014 Jul 2002 ...track@fedex.comSeguimiento FedEx

numMsg no es un valor estático y pueden variar de una sesión a otra. Cambiará en relación con otros mensajes en el buzón en el momento en que se selecciona el buzón de trabajo actual.

Por el contrario, IDunico es un número único asignado al mensaje por el servidor IMAP en un orden estrictamente ascendente. A medida que cada mensaje se agrega al buzón, se le asigna un identificador más alto que el del mensaje previamente añadido.

Desafortunadamente, los servidores IMAP no utilizan el IDunico como referencia principal para sus mensajes. Al utilizar los comandos IMAP tendrá que especificar el numMsg como referencia para los mensajes en el servidor. Los desarrolladores deben tener cuidado al desarrollar soluciones que referencian los mensajes en la base de datos, dejando el cuerpo del mensaje en el servidor.

Como la característica principal de IMAP es la interoperabilidad, la recomendación final es “Probar TODO.” Es recomendable, probar el cliente con todos los servidores en los que tiene cuenta.

Para mayor información, consulte los siguientes sitios:

  • IMAP Products and Services: http://www.imap.org/products.html
  • MailConnect: http://www.imc.org/imc-mailconnect.

Login EquivalenteNo parámetro POP para IMAP
VerifyIDEquivalente
DeleteEquivalenteLos comandos IMAP borran en tiempo real. Los comandos POP3 requieren POP3_Logout para eliminar los mensajes de forma permanente. IMAP_SetFlags con el marcador \Deleted permite obtener el mismo resultado que POP3_Delete
LogoutEquivalente
SetPrefsEquivalenteSin carpetaDocAdj para IMAP, el parámetro POP3 carpetaDocAdj se vuelve opcional
GetPrefsEquivalenteVer nota carpetaDocAdj en SetPrefs
MsgLstInfo Equivalente
MsgInfoEquivalente
MsgLstEquivalente
UIDToMsgNumEquivalenteunicoID es un Entero largo para IMAP y una cadena para POP3
DownloadEquivalente
POP3_ResetNo direct equivNecesita la combinación de IMAP_Search en los marcadores \Deleted e IMAP_SetFlags para borrar los marcadores \Deleted
POP3_BoxInfoNo equivalencia directaNecesita la combinación de los comandos IMAP_SetCurrentMB e IMAP_MsgLstInfo
IMAP_ MsgNumToUID No equivalencia directa
GetMessageCasi equivalenteIMAP es más poderoso ya que permite seleccionar únicamente el cuerpo del mensaje
POP3_CharsetNo equivalenteIMAP maneja automáticamente los conjuntos de caracteres
IMAP_CapabilityNo equivalenteEspecífico al protocolo IMAP
IMAP_ListMBsNo equivalenteEspecífico al protocolo IMAP
IMAP_GetMBStatusNo equivalenteEspecífico al protocolo IMAP
IMAP_SetCurrentMBNo equivalenteEspecífico al protocolo IMAPl
IMAP_GetCurrentMBNo equivalenteEspecífico al protocolo IMAP
IMAP_CloseCurrentMBNo equivalenteEspecífico al protocolo IMAP
IMAP_CopyToMBNo equivalenteEspecífico al protocolo IMAP
IMAP_SubscribeMBNo equivalenteEspecífico al protocolo IMAP
IMAP_CreateMBNo equivalenteEspecífico al protocolo IMAP
IMAP_DeleteMBNo equivalenteEspecífico al protocolo IMAP
IMAP_RenameMBNo equivalenteEspecífico al protocolo IMAP
IMAP_SetFlagsNo equivalenteEspecífico al protocolo IMAP
IMAP_GetFlagsNo equivalenteEspecífico al protocolo IMAP
IMAP_SearchNo equivalenteEspecífico al protocolo IMAP
IMAP_MsgFetchNo equivalenteEspecífico al protocolo IMAP

Notas:

  • Servidores IMAP y POP3: en el caso de los servidores IMAP, no declare msgID de la misma forma, dado que msgID es un entero largo.
  • La eliminación no funciona exactamente de la misma manera entre los protocolos POP3 e IMAP. IMAP_Delete elimina los mensajes en tiempo real. Para obtener el mismo resultado que POP3_Delete, use IMAP_SetFlags para establecer el marcador \Deleted; para obtener el mismo resultado que POP3_Reset, use IMAP_SetFlags para recuperar los marcadores \Deleted.
  • Para una mayor flexibilidad, los comandos de Internet de 4D pueden omitir una referencia a la conexión IMAP controles de bajo nivel TCP y viceversa. Para obtener más información, consulte la sección Rutinas de bajo nivel, Presentación.

 
PROPIEDADES 

Producto: 4D Internet Commands
Tema: IC IMAP Review Mail

 
HISTORIA 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)