En este documento, se describen las extensiones de IMAP que proporciona Gmail y cómo los desarrolladores pueden usarlas. En este documento, se supone que tienes conocimientos sobre el protocolo IMAP.
Descripción general
Gmail proporciona un conjunto de extensiones de IMAP para permitir que los autores de clientes de IMAP proporcionen una experiencia más similar a Gmail a través de IMAP. Es posible que los desarrolladores que integran funciones de Gmail en sus apps para Web o dispositivos móviles prefieran usar la API de Gmail de RESTful.
Las extensiones se pueden usar cuando se accede a Gmail a través del protocolo IMAP estándar o cuando se conecta a través de OAuth.
Verifica la presencia de extensiones
Gmail anuncia su compatibilidad con extensiones en su respuesta al comando CAPABILITY. La compatibilidad con extensiones en este documento se indica con la presencia de X-GM-EXT-1 en la lista de capacidades compatibles.
Se recomienda encarecidamente a los clientes que se anuncien con el comando IMAP ID (RFC 2971) y que incluyan una dirección de contacto como alternativa en caso de que se requieran cambios en estas extensiones.
El siguiente es un ejemplo de protocolo de enlace y uso del comando CAPABILITY en el extremo IMAP de Gmail:
* OK Gimap ready for requests from 127.0.0.1 k2if6111336rvb.0
a001 LOGIN username@gmail.com password
a001 OK username@gmail.com authenticated (Success)
a001 OK Login successful
a002 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1
a002 OK Success
a003 ID ("name" "clientname" "version" "1.2.3" "vendor" "companyname" "contact" "foo@example.com")
* ID ("name" "GImap" "vendor" "Google, Inc." "support-url" "http://mail.google.com/support" "remote-host" "127.0.0.1")
a003 OK Success
Extensión de uso especial del comando LIST
Gmail admite la extensión IMAP LIST para buzones de uso especial, que proporciona atributos nuevos para carpetas especiales. Estos atributos permiten que el cliente sepa qué carpetas son especiales (p. ej., \All). La lista actual de carpetas especiales incluye las siguientes: Destacados, Importantes, Elementos enviados, Borradores, Spam, Todos y Papelera. Todas las respuestas LIST contienen estos atributos de uso especial. No es una CAPABILITY nueva ni algo que los clientes deban ENABLEd.
El siguiente es un ejemplo de transcripción de una llamada a LIST:
a004 LIST "" "*"
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\Noselect \HasChildren) "/" "[Gmail]"
* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail"
* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts"
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important"
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail"
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
* LIST (\HasNoChildren \Flagged) "/" "[Gmail]/Starred"
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"
a004 OK Success
La respuesta sigue el estándar de uso especial con un atributo \Important adicional agregado para la Bandeja de entrada prioritaria de Gmail (es decir, "[Gmail]/Important").
XLIST está obsoleto
El comando XLIST específico de Gmail dejó de estar disponible en 2013 en favor del estándar de lista de uso especial de IMAP. Se recomienda a los clientes que migren de XLIST al estándar de la industria de uso especial lo antes posible. Ten en cuenta que los nombres de los atributos estándar de uso especial son similares, pero no idénticos a los nombres de los atributos XLIST heredados.
Extensión del comando SEARCH: X-GM-RAW
Para proporcionar acceso a la sintaxis de búsqueda completa de Gmail, Gmail proporciona el atributo de búsqueda X-GM-RAW. Los argumentos que se pasan junto con el atributo X-GM-RAW cuando se ejecutan los comandos SEARCH o UID SEARCH se interpretarán de la misma manera que en la interfaz web de Gmail.
El siguiente es un ejemplo de transcripción de una llamada a SEARCH con el atributo X-GM-RAW:
a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)
Acceso al ID de mensaje único de Gmail: X-GM-MSGID
Gmail proporciona un ID de mensaje único para cada correo electrónico, de modo que se pueda identificar un mensaje único en varias carpetas. La recuperación de este ID de mensaje se admite a través del atributo X-GM-MSGID en el comando FETCH. El ID de mensaje es un número entero sin signo de 64 bits y es el equivalente decimal de la cadena hexadecimal de ID que se usa en la interfaz web y la API de Gmail.
El siguiente es un ejemplo de transcripción de una llamada para recuperar el X-GM-MSGID de un mensaje con el comando FETCH:
a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)
El atributo X-GM-MSGID también se puede usar en los comandos SEARCH o UID SEARCH para encontrar los números de secuencia o el UID de un mensaje determinado el ID de mensaje de Gmail. El siguiente es un ejemplo de transcripción de una llamada para recuperar el UID de un mensaje con el comando UID SEARCH:
a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)
Acceso al ID de conversación de Gmail: X-GM-THRID
Gmail proporciona un ID de conversación para asociar grupos de mensajes de la misma manera que en la interfaz web de Gmail. La recuperación de este ID de conversación se admite a través del atributo X-GM-THRID en el comando FETCH. El ID de conversación es un número entero sin signo de 64 bits y es el equivalente decimal de la cadena hexadecimal de ID que se usa en la interfaz web y la API de Gmail.
El siguiente es un ejemplo de transcripción de una llamada para recuperar el X-GM-THRID de varios mensajes (en dos conversaciones) con el comando FETCH:
a008 FETCH 1:4 (X-GM-THRID)
* 1 FETCH (X-GM-THRID 1278455344230334865)
* 2 FETCH (X-GM-THRID 1266894439832287888)
* 3 FETCH (X-GM-THRID 1266894439832287888)
* 4 FETCH (X-GM-THRID 1266894439832287888)
a008 OK FETCH (Success)
El atributo X-GM-THRID también se puede usar en los comandos SEARCH o UID SEARCH para encontrar los números de secuencia o los UID de los mensajes en una conversación determinada. El siguiente es un ejemplo de transcripción de una llamada para recuperar los UID con el comando UID SEARCH:
a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)
Acceso a las etiquetas de Gmail: X-GM-LABELS
Gmail trata las etiquetas como carpetas para los fines de IMAP. Por lo tanto, las etiquetas se pueden modificar con los comandos IMAP estándar, CREATE, RENAME y DELETE, que actúan en las carpetas. Las etiquetas del sistema, que son las etiquetas creadas por Gmail, están reservadas y tienen el prefijo "[Gmail]" o "[GoogleMail]" en la lista de etiquetas. Usa el comando XLIST para obtener la lista completa de etiquetas de un buzón.
Para recuperar las etiquetas de un mensaje determinado, usa el atributo X-GM-LABELS con el comando FETCH. El atributo se muestra como una lista de ASTRINGs, codificada en UTF-7 según corresponda. Un ASTRING es un átomo o una cadena según lo define la RFC.
El siguiente es un ejemplo de transcripción de una llamada para recuperar el X-GM-LABELS de varios mensajes con el comando FETCH:
a010 FETCH 1:4 (X-GM-LABELS)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante"))
* 2 FETCH (X-GM-LABELS (foo))
* 3 FETCH (X-GM-LABELS ())
* 4 FETCH (X-GM-LABELS (\Drafts))
a010 OK FETCH (Success)
Las etiquetas se pueden agregar a un mensaje con el comando STORE junto con el atributo X-GM-LABELS. El siguiente es un ejemplo de transcripción que muestra la adición de una etiqueta a un mensaje:
a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)
El atributo X-GM-LABELS también se puede usar en los comandos SEARCH o UID SEARCH para encontrar los números de secuencia o los UID de todos los mensajes de la carpeta con una etiqueta determinada. El siguiente es un ejemplo de transcripción de una llamada para recuperar los números de secuencia de varios mensajes con el comando SEARCH:
a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)
Referencias
- IMAP: RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
- IMAP ID: RFC 2971: IMAP4 ID EXTENSION
- IMAP Special-Use: RFC 6154: IMAP LIST Extension for Special-Use Mailboxes