Abrir una carpeta de almacén de mensajes
Hace referencia a: Outlook 2013 | Outlook 2016
Antes de abrir cualquier carpeta, su identificador de entrada debe estar disponible. Para la mayoría de las carpetas, esto significa recuperar sus propiedades de PR_ENTRYID . Para carpetas especiales, como algunas de las carpetas del subárbol IPM y otras carpetas raíz, MAPI define propiedades de identificador de entrada especiales a las que se puede acceder llamando al método IMAPIProp::GetProps del almacén de mensajes. Estos identificadores de entrada siempre son a largo plazo y se denominan de la siguiente manera:
Folder | Propiedad de identificador de entrada |
---|---|
Carpeta Bandeja de salida |
PR_IPM_OUTBOX_ENTRYID (PidTagIpmOutboxEntryId) (solo clase de mensaje IPM) |
carpeta Elementos eliminados |
PR_IPM_WASTEBASKET_ENTRYID (PidTagIpmWastebasketEntryId) |
carpeta de elementos enviados |
PR_IPM_SENTMAIL_ENTRYID (PidTagIpmSentMailEntryId) |
Carpeta ra�z IPM |
PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId) |
Carpeta ra�z de los resultados de b�squeda |
PR_FINDER_ENTRYID (PidTagFinderEntryId) |
Carpeta raíz de vistas comunes |
PR_COMMON_VIEWS_ENTRYID (PidTagCommonViewsEntryId) |
Carpeta raíz de vistas personales |
PR_VIEWS_ENTRYID (PidTagViewsEntryId) |
Carpeta raíz de contactos |
PR_IPM_CONTACT_ENTRYID (PidTagIpmContactEntryId) |
Borradores de carpeta raíz |
PR_IPM_DRAFTS_ENTRYID (PidTagIpmDraftsEntryId) |
Journal carpeta raíz |
PR_IPM_JOURNAL_ENTRYID (PidTagIpmJournalEntryId) |
Carpeta raíz del calendario |
PR_IPM_APPOINTMENT_ENTRYID (PidTagIpmAppointmentEntryId) |
Carpeta raíz de Notes |
PR_IPM_NOTE_ENTRYID (PidTagIpmNoteEntryId) |
Carpeta raíz de tareas |
PR_IPM_TASK_ENTRYID (PidTagIpmTaskEntryId) |
Antes de intentar recuperar uno de estos identificadores de entrada especiales, recupere la propiedad PR_VALID_FOLDER_MASK (PidTagValidFolderMask) del almacén de mensajes. PR_VALID_FOLDER_MASK es una máscara de bits que identifica cuál de los identificadores de entrada especiales existe. Hay un bit para cada una de las carpetas especiales. Si se establece el bit, indica que se admite la carpeta correspondiente y tiene un identificador de entrada válido. Por ejemplo, si la carpeta Elementos eliminados existe y tiene un identificador de entrada válido, el bit FOLDER_IPM_WASTEBASKET_VALID se establecerá en PR_VALID_FOLDER_MASK.
Abra la carpeta donde se colocan todos los mensajes entrantes de una clase determinada.
Llame a IMsgStore::GetReceiveFolder para recuperar su identificador de entrada y establezca el parámetro lpszMessageClass para que apunte a una cadena de caracteres que identifique la clase de mensaje. Por ejemplo, si desea abrir la Bandeja de entrada del subárbol ipm, apunte lpszMessageClass a IPM. Si desea abrir la carpeta de recepción de mensajes IPC, establézcala para que apunte a IPC.
Si no hay ninguna carpeta de recepción registrada para la clase de mensaje, GetReceiveFolder elige la carpeta de recepción cuya clase de mensaje asociada coincide con el prefijo más largo posible de la clase de mensaje pasada. Para obtener más información, vea Carpetas de recepción MAPI.
Tenga en cuenta que la propiedad PR_IPM_OUTBOX_ENTRYID se usa para abrir la carpeta Bandeja de salida solo para los mensajes IPM. Si abre la Bandeja de salida para los mensajes IPC, use en su lugar el identificador de entrada para su carpeta de recepción. Los mensajes IPC entrantes y salientes se colocan en la carpeta de recepción.
Llame a uno de los cuatro métodos OpenEntry para abrir la carpeta y devolver un puntero de interfaz que puede usar para acceder a ella. Puede llamar a cualquiera de los métodos siguientes para abrir una carpeta:
El método específico que elija depende de la carpeta que se va a abrir y de los objetos que están disponibles en ese momento. Dado que el método IMAPISession puede abrir cualquier carpeta para cualquier almacén de mensajes en el perfil actual, llame a esta instancia de OpenEntry cuando no sepa nada sobre la carpeta que se va a abrir. Si sabe qué almacén de mensajes posee la carpeta y tiene un puntero al almacén de mensajes, llame a IMsgStore::OpenEntry.
Por ejemplo, use el método IMsgStore para abrir una carpeta de recepción. Si tiene un puntero al objeto de inicio de sesión del proveedor del almacén de mensajes, llame a IMSLogon::OpenEntry. Dado que estas llamadas van directamente al proveedor del almacén de mensajes en lugar de a través de MAPI, el procesamiento es más rápido. Si la carpeta que está abriendo es una subcarpeta de una carpeta que ya tiene abierta, llame al método IMAPIContainer::OpenEntry de la carpeta abierta. El método IMAPIContainer solo abre subcarpetas de una carpeta abierta actualmente y es el único método garantizado para trabajar con identificadores de entrada a corto plazo.
Si desea poder realizar cambios en la carpeta que se va a abrir, especifique un nivel de acceso estableciendo la marca MAPI_BEST_ACCESS o MAPI_MODIFY en la llamada a OpenEntry . Estas marcas son sugerencias al proveedor del almacén de mensajes para conceder el nivel más alto de acceso, para MAPI_BEST_ACCESS, o acceso de lectura y escritura, para MAPI_MODIFY, al abrir la carpeta.
Dado que estas marcas son solo sugerencias, es posible que la carpeta se abra o no con el nivel de acceso que espera. Al recuperar la propiedad PR_ACCESS (PidTagAccess), puede determinar el intervalo de operaciones que se pueden realizar en la carpeta abierta.
Sin embargo, dado que muchos proveedores de almacén de mensajes calculan el valor de esta propiedad a petición en lugar de admitirla como una propiedad de carpeta o como una columna de su tabla de jerarquía, recuperarla puede llevar mucho tiempo. Una estrategia alternativa consiste en intentar cualquier operación que necesite realizar y devolver un error si es necesario.