Este documento describe las extensiones IMAP que proporciona Gmail y cómo pueden usarlas los programadores. En este documento, se asume que ya conoces el protocolo IMAP.
Descripción general
Gmail ofrece un conjunto de extensiones de IMAP para que los autores de los clientes IMAP ofrezcan una experiencia similar a la de Gmail a través de IMAP. En cambio, los desarrolladores que integran funciones de Gmail en sus aplicaciones web o para dispositivos móviles pueden utilizar la API de Gmail RESTful.
Las extensiones se pueden utilizar al acceder a Gmail a través del protocolo IMAP estándar o al conectarse mediante OAuth.
Cómo comprobar la presencia de extensiones
Gmail anuncia su compatibilidad con extensiones en su respuesta al comando CAPABILITY
. La compatibilidad de las extensiones en este documento se indica con la presencia de X-GM-EXT-1
en la lista de funciones compatibles.
Se recomienda a los clientes que se anuncien con el comando de ID de IMAP (RFC 2971) y que incluyan una dirección de contacto como resguardo en caso de que se requieran cambios en estas extensiones.
El siguiente es un ejemplo de protocolo de enlace y el 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 especiales, lo que proporciona nuevos atributos para carpetas especiales. Estos atributos permiten que el cliente sepa qué carpetas son especiales (p. ej., \All
). La lista actual de carpetas especiales contiene los siguientes elementos: Destacados, Importantes, Enviados, Borradores, Spam, Todos los mensajes de correo electrónico y Papelera. Todas las respuestas de LIST
contienen estos atributos de uso especial; este no es un nuevo CAPABILITY
o algo que los clientes deben ENABLEd
.
La siguiente es una transcripción de ejemplo 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, pero se agregó un atributo \Important
adicional a la carpeta Prioritarios de Gmail (es decir, "[Gmail]/Important"
).
XLIST dejó de estar disponible
El comando XLIST
específico de Gmail se dio de baja en 2013 y se lo reemplazó por el estándar de lista de uso especial de IMAP. Se recomienda a los clientes que migren lo antes posible del XLIST
al estándar de la industria de uso especial. Ten en cuenta que los nombres de los atributos estándar de uso especial son similares, pero no idénticos, a los nombres de atributos XLIST
heredados.
Extensión del comando SEARCH: X-GM-RAW
Para brindar acceso a la sintaxis de búsqueda de Gmail completa, 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.
A continuación, se muestra un ejemplo de transcripción de una llamada a SEARCH
mediante 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 a fin de que un mensaje único se pueda identificar en varias carpetas. Se puede recuperar este ID de mensaje mediante el atributo X-GM-MSGID
en el comando FETCH
. El ID de mensaje es un número entero sin firma de 64 bits y es el equivalente decimal de la string hexadecimal de ID que se utiliza en la interfaz web y la API de Gmail.
La siguiente es una transcripción de ejemplo 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 UID
de un mensaje según el ID de mensaje de Gmail. La siguiente es una transcripción de ejemplo 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 la conversación de Gmail: X-GM-THRID
Gmail proporciona un ID de conversación para asociar grupos de mensajes de la misma forma que en la interfaz web de Gmail. Se puede recuperar este ID de subproceso a través del atributo X-GM-THRID
en el comando FETCH
. El ID del subproceso es un número entero sin firma de 64 bits y es el equivalente decimal de la string hexadecimal de ID que se utiliza en la interfaz web y la API de Gmail.
La siguiente es una transcripción de ejemplo de una llamada para recuperar el X-GM-THRID
de varios mensajes (en dos subprocesos) 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 un subproceso determinado. La siguiente es una transcripción de ejemplo de una llamada para recuperar los UID
de varios mensajes mediante 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 considera las etiquetas como carpetas a los efectos de IMAP. Como tales, las etiquetas se pueden modificar mediante los comandos de IMAP estándar, CREATE
, RENAME
y DELETE
, que actúan en las carpetas. Las etiquetas del sistema, que son etiquetas que crea Gmail, están reservadas y con 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.
Las etiquetas de un mensaje determinado se pueden recuperar mediante el atributo X-GM-LABELS
con el comando FETCH
. El atributo se muestra como una lista de ASTRING
, codificada en UTF-7 según corresponda. Una ASTRING
es un atom o una string, como lo define el RFC.
La siguiente es una transcripción de ejemplo 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. La siguiente es una transcripción de ejemplo de una llamada para recuperar los números de secuencia de varios mensajes mediante el comando SEARCH
:
a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)
Referencias
- IMAP: RFC 3501: PROTOCOLO DE ACCESO A LOS MENSAJES DE INTERNET: VERSIÓN 4rev1
- ID de IMAP: RFC 2971: IMAP4 ID EXTENSION
- Uso especial de IMAP: RFC 6154: Extensión de lista de IMAP para buzones de correo de uso especial