2010-11-13 9 views
7

Entonces, el IMAP de Gmail es un poco "raro". Usan carpetas IMAP para representar etiquetas. Normalmente, creo que un correo electrónico en IMAP solo puede pertenecer a una 'Carpeta', sin embargo, con Gmail, un mensaje de correo electrónico puede pertenecer a muchas 'carpetas', lo que nos da una funcionalidad muy cercana a las etiquetas.Gmail IMAP: ¿Hay alguna forma de encontrar todas las etiquetas (carpetas) en las que se encuentra un mensaje en particular?

Mi pregunta es, estoy escribiendo un cliente de Gmail (para que cosas como protagonista, eliminar y archivar trabajar un poco más intuitiva que un cliente IMAP estándar), pero me gustaría ser capaz de mostrar para un determinado correo electrónico, en qué carpetas (etiquetas) se encuentra.

Por lo que puedo decir, esto no es fácil (tendría que recorrer cada mensaje en cada carpeta para ver en cuál está).

¿Alguien sabe de una manera ordenada para hacer esto? ¿O tengo razón al asumir que no hay una manera fácil?

Respuesta

7

Gmail proporciona un conjunto de extensiones IMAP para permitir que los autores de los clientes IMAP proporcionan una experiencia más similar a Gmail a través de IMAP. Ver Gmail IMAP Extensions (X-GM-EXT-1). Para obtener las etiquetas de un mensaje específico, puede llamar al comando IMAP FETCH con el atributo X-GM-LABELS. Ver Access to Gmail labels: X-GM-LABELS

+0

Gracias, había encontrado esa página especial IMAP Gmail hace un tiempo atrás, pero nunca regresó y lo puso aquí. – Redth

-1

La manera más directa (aunque no infalible) es para agarrar los valores de los mensajes de los Message-ID cabeceras. A continuación, iterar sobre las carpetas de "etiqueta" y ejecutar IMAP SEARCH lo largo de las líneas de

A001 SEARCH HEADER MESSAGE-ID "your-msgid-value" 

Si obtiene resultados de vuelta en la respuesta no etiquetada SEARCH, el mensaje tiene la "carpeta" seleccionado etiqueta 's.

Cuestiones relacionadas