Tablas de contenido
Hace referencia a: Outlook 2013 | Outlook 2016
Una tabla de contenido contiene información sobre los objetos de un contenedor MAPI. Los proveedores de libreta de direcciones implementan tablas de contenido para cada uno de sus contenedores, y los proveedores de almacenamiento de mensajes y transporte remoto implementan tablas de contenido para sus carpetas. La tabla de contenido de un contenedor de libreta de direcciones muestra información sobre sus objetos de lista de distribución y usuario de mensajería, mientras que la tabla de contenido de una carpeta muestra información sobre sus mensajes. Las tablas de contenido las usan principalmente las aplicaciones cliente.
Hay dos tipos de tablas de contenido de carpeta:
Las tablas de contenido estándar contienen mensajes estándar, mensajes que se pueden transmitir y hacer visibles a un usuario.
Las tablas de contenido asociadas contienen información oculta y no transmitible creada por un cliente para un propósito específico, como almacenar una representación alternativa de un mensaje estándar. La información asociada se crea pasando la marca de MAPI_ASSOCIATED a la llamada IMAPIFolder::CreateMessage .
Las tablas de contenido de la mayoría de los contenedores de libreta de direcciones y muchas carpetas no admiten la ordenación por categorías.
Se puede acceder a una tabla de contenido mediante una llamada a:
IMAPIContainer::GetContentsTable.
- O-
IMAPIProp::OpenProperty con PR_CONTAINER_CONTENTS (PidTagContainerContents) o PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents) (solo carpetas) especificados como la etiqueta de propiedad y IID_IMAPITable como identificador de interfaz.
Los proveedores de almacén de mensajes y libreta de direcciones deben admitir ambas técnicas para recuperar las propiedades de la tabla. No es aceptable que los proveedores admitan solo una manera de acceder a estas tablas porque los clientes esperan tener la opción.
GetContentsTable acepta como entrada varias marcas que especifican preferencias. Cuando se establece, la marca de MAPI_ASSOCIATED recupera una tabla de contenido asociada. Dado que algunas carpetas no admiten contenido asociado y no hay ninguna manera de que los clientes determinen esto con antelación, GetContentsTable a veces devuelve el error MAPI_E_NO_SUPPORT cuando se solicita una tabla de contenido asociada.
La marca MAPI_DEFERRED_ERRORS indica al implementador de la tabla que no es necesario notificar ningún error durante la llamada hasta algún momento posterior.
La llamada a IMAPIProp::OpenProperty implica acceder a una tabla de contenido abriendo su propiedad correspondiente, PR_CONTAINER_CONTENTS para tablas de contenido de libreta de direcciones y tablas de contenido de carpetas estándar y PR_FOLDER_ASSOCIATED_CONTENTS para las tablas de contenido asociadas. Aunque ninguna de estas propiedades o estas se pueden recuperar a través del método IMAPIProp::GetProps de una carpeta o contenedor, se incluyen en la matriz de etiquetas de propiedad devuelta por el método IMAPIProp::GetPropList .
PR_CONTAINER_CONTENTS también se puede usar para incluir o excluir una tabla de contenido de una operación de copia. Si un cliente especifica PR_CONTAINER_CONTENTS en el parámetro lpExcludeProps para IMAPIProp::CopyTo en una operación de copia, la nueva carpeta o contenedor no admitirá la tabla de contenido de la carpeta o contenedor original.
Las tablas de contenido de contenedores y carpetas de la libreta de direcciones tienen una larga lista de columnas necesarias: columnas que los clientes pueden esperar que estén disponibles después de recuperar la tabla de GetContentsTable o OpenProperty. Los proveedores pueden agregar a este conjunto necesario si es necesario y los clientes, a través del método SetColumns , también pueden solicitar modificaciones.
Las columnas necesarias para cada uno de los tipos de tablas de contenido son:
Columna necesaria | Tipo de tabla de contenido |
---|---|
PR_ADDRTYPE (PidTagAddressType) |
Tablas de contenedor de libreta de direcciones |
PR_DISPLAY_NAME (PidTagDisplayName) |
Tablas de contenedor de libreta de direcciones |
PR_DISPLAY_CC (PidTagDisplayCc) |
Tablas de carpetas del almacén de mensajes |
PR_DISPLAY_TO (PidTagDisplayTo) |
Todas las tablas de contenido de carpeta |
PR_DISPLAY_TYPE (PidTagDisplayType) |
Tablas de contenedor de libreta de direcciones |
PR_ENTRYID (PidTagEntryId) |
Todas las tablas de contenido |
PR_HASATTACH (PidTagHasAttachments) |
Todas las tablas de contenido de carpeta |
PR_INSTANCE_KEY (PidTagInstanceKey) |
Todas las tablas de contenido |
PR_LAST_MODIFICATION_TIME (PidTagLastModificationTime) |
Tablas de carpetas del almacén de mensajes |
PR_MAPPING_SIGNATURE (PidTagMappingSignature) |
Tablas de carpetas del almacén de mensajes |
PR_MESSAGE_CLASS (PidTagMessageClass) |
Todas las tablas de contenido de carpeta |
PR_MESSAGE_DOWNLOAD_TIME (PidTagMessageDownloadTime) |
Tablas de carpetas de transporte remoto |
PR_MESSAGE_FLAGS (PidTagMessageFlags) |
Todas las tablas de contenido de carpeta |
PR_MESSAGE_SIZE (PidTagMessageSize) |
Todas las tablas de contenido de carpeta |
PR_MSG_STATUS (PidTagMessageStatus) |
Todas las tablas de contenido de carpeta |
PR_OBJECT_TYPE (PidTagObjectType) |
Todas las tablas de contenido |
PR_PARENT_ENTRYID (PidTagParentEntryId) |
Tablas de carpetas del almacén de mensajes |
PR_RECORD_KEY (PidTagRecordKey) |
Tablas de contenedores y carpetas del almacén de mensajes de la libreta de direcciones |
PR_SENT_REPRESENTING_NAME (PidTagSentRepresentingName) |
Tablas de carpetas de transporte remoto |
PR_STORE_ENTRYID (PidTagStoreEntryId) |
Tablas de carpetas del almacén de mensajes |
PR_STORE_RECORD_KEY (PidTagStoreRecordKey) |
Tablas de carpetas del almacén de mensajes |
El identificador de entrada disponible con cada fila puede ser un identificador de entrada a corto o largo plazo, en función de la implementación de la tabla. Los identificadores de entrada a corto plazo se usan normalmente en situaciones en las que el rendimiento es un problema. Se puede usar cualquier tipo de identificador de entrada para acceder al objeto correspondiente.
Las tablas de contenido también tienen un conjunto de columnas que son opcionales pero que suelen incluir los proveedores de servicios en sus implementaciones. Estas columnas opcionales son:
Columna opcional | Tipo de tabla de contenido |
---|---|
PR_CLIENT_SUBMIT_TIME (PidTagClientSubmitTime) |
Tablas de carpetas del almacén de mensajes |
PR_CONTENT_COUNT (PidTagContentCount) |
Tablas de contenido de carpeta estándar |
PR_CONTENT_UNREAD (PidTagContentUnreadCount) |
Tablas de contenido de carpeta estándar |
PR_CONVERSATION_INDEX (PidTagConversationIndex) |
Tablas de carpetas del almacén de mensajes |
PR_EMAIL_ADDRESS (PidTagEmailAddress) |
Tablas de contenedor de libreta de direcciones |
PR_IMPORTANCE (PidTagImportance) |
Todas las tablas de contenido de carpeta |
PR_MESSAGE_DELIVERY_TIME (PidTagMessageDeliveryTime) |
Todas las tablas de contenido de carpeta |
PR_NORMALIZED_SUBJECT (PidTagNormalizedSubject) |
Todas las tablas de contenido de carpeta |
PR_PRIORITY (PidTagPriority) |
Todas las tablas de contenido de carpeta |
PR_SEARCH_KEY (PidTagSearchKey) |
Tablas de contenedor de libreta de direcciones |
PR_SEND_RICH_INFO (PidTagSendRichInfo) |
Tablas de contenedor de libreta de direcciones |
PR_SENDER_NAME (PidTagSenderName) |
Todas las tablas de contenido de carpeta |
PR_SENSITIVITY (PidTagSensitivity) |
Todas las tablas de contenido de carpeta |
PR_SUBJECT (PidTagSubject) |
Todas las tablas de contenido de carpeta |
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName) |
Tablas de contenedor de libreta de direcciones |
Los proveedores de almacén de mensajes también deben incluir PR_PARENT_DISPLAY (PidTagParentDisplay) solo para las tablas de contenido de carpetas de resultados de búsqueda.
Las propiedades con nombre solo se pueden agregar al conjunto de columnas de una tabla de contenido de carpeta si todos los mensajes de la carpeta tienen la misma firma de asignación, es decir, la misma asignación de nombres de propiedad a identificadores de propiedad. Las tablas de contenido de carpeta deben admitir la adición de propiedades específicas de la clase de mensaje al conjunto de columnas, si admiten la creación de mensajes arbitrarios en la carpeta.
Los clientes pueden guardar el criterio de ordenación predeterminado de una tabla de contenido de carpeta llamando a su método IMAPIFolder::SaveContentsSort . Si se especifica la marca de RECURSIVE_SORT en la llamada, se puede realizar el criterio de ordenación para aplicarlo a todas las subcarpetas de la carpeta.