Compartilhar via


attMAPIProps

Aplica-se a: Outlook 2013 | Outlook 2016

O atributo attMAPIProps é especial, pois pode ser usado para codificar qualquer propriedade MAPI que não tenha uma contraparte no conjunto de atributos definidos por TNEF existentes. Os dados de atributo são um conjunto contado de propriedades MAPI colocadas de ponta a ponta. O formato dessa codificação, que permite qualquer conjunto de propriedades MAPI, é o seguinte:

Property_Seq:

Property_Value,... de contagem de propriedades

Deve haver tantos itens Property_Value quanto o valor de contagem de propriedades indica.

Property_Value:

Propriedade property-tag Property_property-tag_Proptag_Name

A marca de propriedade é simplesmente o valor associado ao identificador de propriedade, como 0x0037001F para PR_SUBJECT (PidTagSubject).

Propriedade:

Valor de contagem de valor ,...

Valor:

preenchimento value-data value-size value-data padding value-size value-IID value-data padding

Proptag_Name:

name-guid name-kind name-id name-guid name-kind name-string-length name-string padding

O encapsulamento de cada propriedade varia de acordo com o identificador de propriedade e o tipo de propriedade. Marcas de propriedade, identificadores e tipos são definidos nos arquivos de cabeçalho Mapitags.h e Mapidefs.h.

Se a propriedade for uma propriedade nomeada, a marca de propriedade será imediatamente seguida pelo nome da propriedade MAPI, que consiste em um identificador globalmente exclusivo (GUID), um tipo e um identificador ou uma cadeia de caracteres Unicode.

Propriedades e propriedades multivalidas com valores de comprimento variável, como os tipos de propriedade PT_BINARY, PT_STRING8, PT_UNICODE ou PT_OBJECT, são tratadas da seguinte maneira. Primeiro, o número de valores, codificados como um longo sem sinal de 32 bits, é colocado no fluxo TNEF, seguido pelos valores individuais. Os dados de valor de cada propriedade são codificados como seu tamanho em bytes seguidos pelos próprios dados de valor. Os dados de valor são acolchoados a um limite de 4 bytes, embora a quantidade de preenchimento não esteja incluída no tamanho do valor.

Se a propriedade for do tipo PT_OBJECT, o tamanho do valor será seguido pelo identificador de interface do objeto. A implementação atual do TNEF dá suporte somente aos identificadores de interface IID_IMessage, IID_IStorage e IID_Istream. O tamanho do identificador de interface está incluído no tamanho do valor.

Se o objeto for uma mensagem inserida (ou seja, ele tem um tipo de propriedade de PT_OBJECT e um identificador de interface de IID_Imessage), os dados de valor serão codificados como um fluxo TNEF inserido. A codificação real de uma mensagem inserida na implementação do TNEF é feita abrindo um segundo objeto TNEF para o fluxo original e processando o fluxo embutido.