Abrir un almacén de mensajes
Hace referencia a: Outlook 2013 | Outlook 2016
En función del perfil, un cliente tendrá que abrir uno o varios almacenes de mensajes durante una sesión típica. Abrir un almacén de mensajes significa obtener acceso a un puntero a su implementación de IMsgStore : IMAPIProp . La interfaz IMsgStore proporciona métodos para la notificación, la realización de asignaciones de carpetas y el acceso a carpetas y mensajes.
Los clientes abren almacenes de mensajes al iniciar sesión y cuando se modifica un perfil. Si el cliente permite a los usuarios agregar almacenes de mensajes al perfil durante una sesión activa, puede abrirlos inmediatamente o omitirlos hasta la siguiente sesión. Al registrarse para recibir notificaciones en la tabla del almacén de mensajes, se le avisará de la disponibilidad de un nuevo almacén de mensajes.
Para abrir un almacén de mensajes, debe tener su identificador de entrada disponible. La mayoría de los clientes acceden a los identificadores de entrada de los almacenes de mensajes que desean abrir a través de la tabla del almacén de mensajes. Sin embargo, algunos almacenes de mensajes documentan el formato de sus identificadores de entrada, lo que permite a los clientes omitir la tabla del almacén de mensajes y construir el identificador de entrada necesario. Pueden pasar este identificador de entrada directamente a IMAPISession::OpenMsgStore y MAPI crea automáticamente una sección de perfil para el proveedor sin asociarlo a ningún servicio de mensajes.
Recuperar un identificador de entrada de la tabla del almacén de mensajes
Llame a IMAPISession::GetMsgStoresTable para abrir la tabla del almacén de mensajes.
Llame a IMAPITable::SetColumns para limitar la tabla a un conjunto de columnas pequeño que incluya las columnas siguientes:
- PR_PROVIDER_DISPLAY o PR_DISPLAY_NAME
- propiedades de PR_ENTRYID
- PR_MDB_PROVIDER
- PR_RESOURCE_FLAGS
Cree una restricción para filtrar la fila que representa el almacén de mensajes que se va a abrir. Para obtener más información sobre cómo buscar el almacén de mensajes predeterminado, vea Abrir el almacén de mensajes predeterminado. Para buscar un almacén de mensajes por nombre, aplique cualquiera de las siguientes restricciones de propiedad:
Haga coincidir PR_PROVIDER_DISPLAY (PidTagProviderDisplay) con el nombre general de este tipo de almacén de mensajes. Por ejemplo, PR_PROVIDER_DISPLAY puede establecerse en "Carpetas personales".
Haga coincidir PR_MDB_PROVIDER (PidTagStoreProvider) con la MAPIUID específica para este tipo de almacén de mensajes.
Haga coincidir PR_DISPLAY_NAME (PidTagDisplayName) con el nombre de este almacén de mensajes determinado. Por ejemplo, PR_DISPLAY_NAME podría establecerse en "Mis mensajes para el año fiscal 2010".
Llame a HrQueryAllRows para recuperar la fila adecuada de la tabla del almacén de mensajes. El identificador de entrada de la fila se incluirá en la matriz de valores de propiedad para el miembro aRow del conjunto de filas al que apunta el parámetro pprows .
Llame a FreeProws para liberar el conjunto de filas al que apunta pprows.
Libere la tabla del almacén de mensajes llamando a su método IUnknown::Release .
Si ha creado un identificador de entrada personalizado para que se abra el almacén de mensajes, llame a la función WrapStoreEntryID para convertirlo en un identificador de entrada estándar.
Después de tener el identificador de entrada de un almacén de mensajes, llame a uno de los métodos siguientes para abrirlo:
Llame a OpenMsgStore si necesita especificar una variedad de opciones especiales para el almacén de mensajes. OpenMsgStore le permite suprimir la visualización de cuadros de diálogo, identificar el almacén de mensajes como temporal o como un almacén que no se ha agregado, establecer niveles de acceso y aplazar errores. OpenEntry solo permite establecer niveles de acceso y aplazar errores.
Establecer la marca de MDB_NO_MAIL indica a MAPI que el almacén de mensajes no se usará para enviar o recibir mensajes. MAPI no informa a la cola MAPI sobre la existencia de este almacén de mensajes. La marca MDB_TEMPORARY designa un almacén de mensajes como temporal, lo que implica que no se puede usar para almacenar información permanente. Los almacenes de mensajes temporales no aparecen en la tabla del almacén de mensajes.