La búsqueda de Outlook funciona bien para encontrar correos electrónicos por remitente o asunto, pero falla cuando necesita encontrar elementos por una propiedad MAPI específica como PR_MESSAGE_CLASS. Esta propiedad almacena el tipo de mensaje, como IPM.Note para correo estándar o IPM.Appointment para elementos de calendario. La búsqueda integrada de Outlook no expone las propiedades MAPI directamente en el cuadro de búsqueda. Este artículo explica cómo usar consultas DASL y Búsqueda avanzada para localizar elementos por PR_MESSAGE_CLASS.
Puntos clave: Buscar elementos de Outlook por PR_MESSAGE_CLASS
- Búsqueda avanzada (Ctrl+Shift+F): Permite buscar por propiedad MAPI usando la sintaxis de consulta DASL en la carpeta de búsqueda.
- Sintaxis de consulta DASL “urn:schemas:httpmail:messageclass”: La etiqueta de propiedad exacta para filtrar por PR_MESSAGE_CLASS en la búsqueda de Outlook.
- Carpetas de búsqueda con criterios personalizados: Guarde su filtro PR_MESSAGE_CLASS como una carpeta de búsqueda reutilizable que se actualiza automáticamente.
Entender PR_MESSAGE_CLASS y las propiedades MAPI en Outlook
PR_MESSAGE_CLASS es una propiedad MAPI que identifica el tipo de un elemento de Outlook. Cada clase de elemento sigue una convención de nomenclatura definida por Outlook y complementos de terceros. Los valores comunes incluyen IPM.Note para mensajes de correo, IPM.Appointment para eventos de calendario, IPM.Contact para contactos e IPM.Task para tareas. Los formularios personalizados y los complementos pueden registrar sus propias clases de mensaje, como IPM.Note.CustomForm o IPM.Post para elementos de debate.
Outlook almacena esta propiedad internamente pero no la muestra en la interfaz de búsqueda estándar. El cuadro de búsqueda coincide con campos visibles como asunto, cuerpo y nombre del remitente. Para consultar PR_MESSAGE_CLASS, debe usar la sintaxis DASL (DAV Search and Locating) compatible con el cuadro de diálogo Búsqueda avanzada de Outlook. Las consultas DASL se dirigen al espacio de nombres MAPI subyacente y pueden filtrar cualquier propiedad que Outlook exponga a través de su proveedor de búsqueda.
La etiqueta de propiedad para PR_MESSAGE_CLASS en DASL es urn:schemas:httpmail:messageclass. Esta cadena se asigna directamente a la propiedad MAPI 0x001A001F para clases de mensaje de tipo cadena. Cuando construye una consulta DASL, compara esta propiedad con un valor de clase de mensaje específico usando operadores como EQ, LIKE o CONTAINS.
Pasos para encontrar elementos por PR_MESSAGE_CLASS usando Búsqueda avanzada
Búsqueda avanzada es la herramienta integrada de Outlook que admite consultas DASL. Siga estos pasos para crear un filtro de búsqueda por PR_MESSAGE_CLASS.
- Abrir Búsqueda avanzada
Presione Ctrl+Shift+F en su teclado. Aparece el cuadro de diálogo Búsqueda avanzada con una pestaña Buscar y una pestaña Examinar. - Cambiar a la pestaña Avanzada
Haga clic en la pestaña Avanzada en el cuadro de diálogo Búsqueda avanzada. Esta pestaña contiene los controles Campos, Condición y Valor para construir una consulta DASL. - Definir el campo de propiedad MAPI
Haga clic en el botón Campo y seleccione Todos los campos de correo > Clase de mensaje si aparece en la lista. Si Clase de mensaje no está visible, elija Campos definidos por el usuario en la carpeta > Nuevo campo. En el cuadro Nombre escribaPR_MESSAGE_CLASS, establezca Tipo en Texto y haga clic en Aceptar. - Establecer la condición y el valor
En la lista desplegable Condición, seleccione contiene o es exactamente. Para coincidencias exactas elija es exactamente. En el cuadro Valor escriba la cadena de clase de mensaje, comoIPM.Appointment. Haga clic en Agregar a la lista. - Ejecutar la búsqueda
Haga clic en Buscar ahora en la parte superior del cuadro de diálogo. Outlook busca en la carpeta seleccionada actualmente y muestra los elementos coincidentes en el panel de resultados a continuación.
Para buscar en todas las carpetas, seleccione Todos los elementos de correo y publicación en la lista desplegable Buscar en antes de ejecutar la búsqueda. La pestaña Avanzada admite múltiples condiciones combinadas con lógica Y/O para filtros complejos.
Usar una consulta DASL directamente en Búsqueda avanzada
Si el campo Clase de mensaje no aparece, puede introducir una consulta DASL manualmente. En la pestaña Avanzada, haga clic en Campo > Todos los campos de correo > Mensaje y luego escriba la cadena de propiedad DASL en el cuadro Valor. Use este formato:
urn:schemas:httpmail:messageclass LIKE '%IPM.Note%'
Reemplace IPM.Note con la clase que desea encontrar. El operador LIKE con signos de porcentaje coincide con cualquier clase de mensaje que contenga esa subcadena. Para una coincidencia exacta, elimine los signos de porcentaje y use:
urn:schemas:httpmail:messageclass = 'IPM.Appointment'
Crear una carpeta de búsqueda persistente para PR_MESSAGE_CLASS
Las carpetas de búsqueda le permiten guardar una consulta DASL para que Outlook llene automáticamente la carpeta con los elementos coincidentes. Esto es útil para la supervisión continua de clases de mensaje específicas.
- Crear una nueva carpeta de búsqueda
Vaya a Carpeta > Nueva carpeta de búsqueda en la cinta de opciones. Desplácese hasta la parte inferior de la lista y seleccione Crear una carpeta de búsqueda personalizada. Haga clic en Elegir. - Nombrar la carpeta
En el cuadro de diálogo Carpeta de búsqueda personalizada, escriba un nombre descriptivo como Elementos de cita. - Definir criterios
Haga clic en Criterios y vaya a la pestaña Avanzada. Siga los mismos pasos que en Búsqueda avanzada para agregar la condición PR_MESSAGE_CLASS. Haga clic en Aceptar para guardar. - Seleccionar carpetas para buscar
En el cuadro de diálogo Carpeta de búsqueda personalizada, haga clic en Examinar para elegir qué carpetas supervisa la carpeta de búsqueda. Seleccione su buzón y cualquier subcarpeta. Haga clic en Aceptar dos veces.
La carpeta de búsqueda aparece en Carpetas de búsqueda en el panel de carpetas. Outlook la actualiza automáticamente a medida que llegan o cambian nuevos elementos.
Problemas comunes al buscar por PR_MESSAGE_CLASS
Búsqueda avanzada no devuelve resultados aunque existan elementos
La causa más común es una cadena de clase de mensaje incorrecta. Verifique el nombre exacto de la clase abriendo un elemento y ejecutando una macro de VBA para leer su propiedad PR_MESSAGE_CLASS. Alternativamente, use OutlookSpy o MFCMAPI para inspeccionar el valor de la propiedad. También confirme que la carpeta que está buscando contiene elementos de esa clase. Una carpeta de calendario no contendrá elementos IPM.Note.
El campo Clase de mensaje no aparece en la lista de campos
Outlook oculta ciertas propiedades MAPI del selector de campos. Cree un campo definido por el usuario llamado PR_MESSAGE_CLASS como se describe en los pasos anteriores. El campo se asigna a la propiedad MAPI correcta cuando lo agrega.
La carpeta de búsqueda no se actualiza después de agregar nuevos elementos
Los retrasos de indexación pueden hacer que una carpeta de búsqueda parezca vacía. Espere a que Windows Search termine de indexar. Para forzar una actualización, haga clic con el botón derecho en la carpeta de búsqueda y seleccione Actualizar carpeta. Si el problema persiste, reconstruya el índice de búsqueda desde Archivo > Opciones > Buscar > Opciones de indexación > Avanzadas > Reconstruir.
| Elemento | Búsqueda avanzada (búsqueda única) | Carpeta de búsqueda (persistente) |
|---|---|---|
| Descripción | Filtro temporal usando Ctrl+Shift+F | Consulta guardada que se actualiza automáticamente |
| Tiempo de configuración | Menos de 2 minutos | 5 minutos con selección de carpetas |
| Reutilización | Debe recrearse cada vez | Persiste hasta que se elimine |
| Ideal para | Investigaciones ad hoc | Supervisión continua de clases de mensaje |
| Método de consulta DASL | Entrada manual o selector de campos | Pestaña Avanzada del cuadro de diálogo Criterios |
Buscar por PR_MESSAGE_CLASS le brinda un control preciso sobre qué tipos de elementos de Outlook aparecen en sus resultados. Use Búsqueda avanzada para consultas únicas y Carpetas de búsqueda para filtros recurrentes. Puede extender la misma técnica a otras propiedades MAPI como PR_SENDER_NAME o PR_SUBJECT usando sus etiquetas DASL correspondientes. Para la automatización avanzada, considere escribir una macro de VBA que ejecute un filtro DASL con un temporizador o en respuesta a un evento de cambio de carpeta.