Tabelas de conteúdo
Aplica-se a: Outlook 2013 | Outlook 2016
Uma tabela de conteúdo contém informações sobre objetos em um contêiner MAPI. Os provedores de catálogo de endereços implementam tabelas de conteúdo para cada um de seus contêineres, e o repositório de mensagens e os provedores de transporte remoto implementam tabelas de conteúdo para suas pastas. A tabela de conteúdo de um contêiner de catálogo de endereços lista informações sobre seus objetos de lista de distribuição e usuário de mensagens, enquanto a tabela de conteúdo de uma pasta lista informações sobre suas mensagens. As tabelas de conteúdo são usadas principalmente por aplicativos cliente.
Há dois tipos de tabelas de conteúdo de pasta:
As tabelas de conteúdo padrão contêm mensagens padrão – mensagens que podem ser transmitidas e tornadas visíveis para um usuário.
As tabelas de conteúdo associadas contêm informações ocultas e não transmitíveis criadas por um cliente para uma finalidade específica, como armazenar uma representação alternativa de uma mensagem padrão. As informações associadas são criadas passando o sinalizador MAPI_ASSOCIATED para a chamada IMAPIFolder::CreateMessage .
As tabelas de conteúdo da maioria dos contêineres de catálogo de endereços e muitas pastas não dão suporte à classificação categorizada.
Uma tabela de conteúdo pode ser acessada chamando:
IMAPIContainer::GetContentsTable.
- Ou-
IMAPIProp::OpenProperty com PR_CONTAINER_CONTENTS (PidTagContainerContents) ou PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents) (somente pastas) especificados como a marca de propriedade e IID_IMAPITable como o identificador de interface.
Os provedores do repositório de mensagens e do catálogo de endereços devem dar suporte a ambas as técnicas para recuperar propriedades da tabela. É inaceitável que os provedores dêem suporte apenas a uma maneira de acessar essas tabelas porque os clientes esperam ter a escolha.
GetContentsTable aceita como entrada vários sinalizadores que especificam preferências. Quando definido, o sinalizador MAPI_ASSOCIATED recupera uma tabela de conteúdo associada. Como algumas pastas não dão suporte a conteúdo associado e não há como os clientes determinarem isso com antecedência, o GetContentsTable às vezes retorna o erro MAPI_E_NO_SUPPORT quando uma tabela de conteúdo associada é solicitada.
O sinalizador MAPI_DEFERRED_ERRORS indica ao implementador da tabela que quaisquer erros encontrados durante a chamada não precisam ser relatados até algum momento posterior.
A chamada para IMAPIProp::OpenProperty envolve acessar uma tabela de conteúdo abrindo sua propriedade correspondente, PR_CONTAINER_CONTENTS para tabelas de conteúdo do catálogo de endereços e tabelas de conteúdo de pasta padrão e PR_FOLDER_ASSOCIATED_CONTENTS para tabelas de conteúdo associadas. Embora nenhuma ou essas propriedades possam ser recuperadas por meio do método IMAPIProp::GetProps de uma pasta ou contêiner, elas são incluídas na matriz de marcas de propriedade retornada pelo método IMAPIProp::GetPropList .
PR_CONTAINER_CONTENTS também pode ser usado para incluir ou excluir uma tabela de conteúdo de uma operação de cópia. Se um cliente especificar PR_CONTAINER_CONTENTS no parâmetro lpExcludeProps para IMAPIProp::CopyTo em uma operação de cópia, a nova pasta ou contêiner não dará suporte à tabela de conteúdo da pasta ou contêiner original.
As tabelas de conteúdo de contêiner e pasta do catálogo de endereços têm uma longa lista de colunas necessárias – colunas que os clientes podem esperar estar disponíveis depois de recuperar a tabela de GetContentsTable ou OpenProperty. Os provedores podem adicionar a esse conjunto necessário, se necessário, e os clientes, por meio do método SetColumns , também podem solicitar modificações.
As colunas necessárias para cada um dos tipos de tabelas de conteúdo são:
Coluna necessária | Tipo de tabela de conteúdo |
---|---|
PR_ADDRTYPE (PidTagAddressType) |
Tabelas de contêineres do catálogo de endereços |
PR_DISPLAY_NAME (PidTagDisplayName) |
Tabelas de contêineres do catálogo de endereços |
PR_DISPLAY_CC (PidTagDisplayCc) |
Tabelas de pastas do repositório de mensagens |
PR_DISPLAY_TO (PidTagDisplayTo) |
Todas as tabelas de conteúdo de pasta |
PR_DISPLAY_TYPE (PidTagDisplayType) |
Tabelas de contêineres do catálogo de endereços |
PR_ENTRYID (PidTagEntryId) |
Todas as tabelas de conteúdo |
PR_HASATTACH (PidTagHasAttachments) |
Todas as tabelas de conteúdo de pasta |
PR_INSTANCE_KEY (PidTagInstanceKey) |
Todas as tabelas de conteúdo |
PR_LAST_MODIFICATION_TIME (PidTagLastModificationTime) |
Tabelas de pastas do repositório de mensagens |
PR_MAPPING_SIGNATURE (PidTagMappingSignature) |
Tabelas de pastas do repositório de mensagens |
PR_MESSAGE_CLASS (PidTagMessageClass) |
Todas as tabelas de conteúdo de pasta |
PR_MESSAGE_DOWNLOAD_TIME (PidTagMessageDownloadTime) |
Tabelas de pastas de transporte remoto |
PR_MESSAGE_FLAGS (PidTagMessageFlags) |
Todas as tabelas de conteúdo de pasta |
PR_MESSAGE_SIZE (PidTagMessageSize) |
Todas as tabelas de conteúdo de pasta |
PR_MSG_STATUS (PidTagMessageStatus) |
Todas as tabelas de conteúdo de pasta |
PR_OBJECT_TYPE (PidTagObjectType) |
Todas as tabelas de conteúdo |
PR_PARENT_ENTRYID (PidTagParentEntryId) |
Tabelas de pastas do repositório de mensagens |
PR_RECORD_KEY (PidTagRecordKey) |
Tabelas de pastas do contêiner do catálogo de endereços e do repositório de mensagens |
PR_SENT_REPRESENTING_NAME (PidTagSentRepresentingName) |
Tabelas de pastas de transporte remoto |
PR_STORE_ENTRYID (PidTagStoreEntryId) |
Tabelas de pastas do repositório de mensagens |
PR_STORE_RECORD_KEY (PidTagStoreRecordKey) |
Tabelas de pastas do repositório de mensagens |
O identificador de entrada disponível com cada linha pode ser um identificador de entrada de curto ou longo prazo, dependendo da implementação da tabela. Identificadores de entrada de curto prazo normalmente são usados em situações em que o desempenho é um problema. Qualquer tipo de identificador de entrada pode ser usado para acessar o objeto correspondente.
As tabelas de conteúdo também têm um conjunto de colunas que são opcionais, mas geralmente incluídas pelos provedores de serviços em suas implementações. Estas colunas opcionais são:
Coluna opcional | Tipo de tabela de conteúdo |
---|---|
PR_CLIENT_SUBMIT_TIME (PidTagClientSubmitTime) |
Tabelas de pastas do repositório de mensagens |
PR_CONTENT_COUNT (PidTagContentCount) |
Tabelas de conteúdo de pasta padrão |
PR_CONTENT_UNREAD (PidTagContentUnreadCount) |
Tabelas de conteúdo de pasta padrão |
PR_CONVERSATION_INDEX (PidTagConversationIndex) |
Tabelas de pastas do repositório de mensagens |
PR_EMAIL_ADDRESS (PidTagEmailAddress) |
Tabelas de contêineres do catálogo de endereços |
PR_IMPORTANCE (PidTagImportance) |
Todas as tabelas de conteúdo de pasta |
PR_MESSAGE_DELIVERY_TIME (PidTagMessageDeliveryTime) |
Todas as tabelas de conteúdo de pasta |
PR_NORMALIZED_SUBJECT (PidTagNormalizedSubject) |
Todas as tabelas de conteúdo de pasta |
PR_PRIORITY (PidTagPriority) |
Todas as tabelas de conteúdo de pasta |
PR_SEARCH_KEY (PidTagSearchKey) |
Tabelas de contêineres do catálogo de endereços |
PR_SEND_RICH_INFO (PidTagSendRichInfo) |
Tabelas de contêineres do catálogo de endereços |
PR_SENDER_NAME (PidTagSenderName) |
Todas as tabelas de conteúdo de pasta |
PR_SENSITIVITY (PidTagSensitivity) |
Todas as tabelas de conteúdo de pasta |
PR_SUBJECT (PidTagSubject) |
Todas as tabelas de conteúdo de pasta |
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName) |
Tabelas de contêineres do catálogo de endereços |
Os provedores do repositório de mensagens também devem incluir PR_PARENT_DISPLAY (PidTagParentDisplay) apenas para tabelas de conteúdo de pastas de resultado de pesquisa.
As propriedades nomeadas podem ser adicionadas ao conjunto de colunas de uma tabela de conteúdo de pasta somente se todas as mensagens na pasta tiverem a mesma assinatura de mapeamento, ou seja, o mesmo mapeamento de nomes de propriedade para identificadores de propriedade. As tabelas de conteúdo da pasta devem dar suporte à adição de propriedades específicas da classe de mensagem ao conjunto de colunas, se elas derem suporte à criação de mensagens arbitrárias na pasta.
Os clientes podem salvar a ordem de classificação padrão de uma tabela de conteúdo de pasta chamando seu método IMAPIFolder::SaveContentsSort . Se o sinalizador RECURSIVE_SORT for especificado na chamada, a ordem de classificação poderá ser feita para aplicar a todas as subpastas dentro da pasta.