attMAPIProps
Hace referencia a: Outlook 2013 | Outlook 2016
El atributo attMAPIProps es especial porque se puede usar para codificar cualquier propiedad MAPI que no tenga un homólogo en el conjunto de atributos definidos por TNEF existentes. Los datos de atributos son un conjunto de propiedades MAPI contadas de un extremo a otro. El formato de esta codificación, que permite cualquier conjunto de propiedades MAPI, es el siguiente:
Property_Seq:
Property_Value,... de recuento de propiedades
Debe haber tantos elementos Property_Value como indica el valor de recuento de propiedades.
Property_Value:
property-tag Property_property-tag_Proptag_Name (propiedad)
La etiqueta de propiedad es simplemente el valor asociado al identificador de propiedad, como 0x0037001F para PR_SUBJECT (PidTagSubject).
Propiedad:
Valor de recuento de valores ,...
Valor:
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
La encapsulación de cada propiedad varía según el identificador de propiedad y el tipo de propiedad. Las etiquetas de propiedad, los identificadores y los tipos se definen en los archivos de encabezado Mapitags.h y Mapidefs.h.
Si la propiedad es una propiedad con nombre, la etiqueta de propiedad va seguida inmediatamente del nombre de propiedad MAPI, que consta de un identificador único global (GUID), un tipo y un identificador o una cadena Unicode.
Las propiedades y propiedades multivalor con valores de longitud variable, como los tipos de propiedad PT_BINARY, PT_STRING8, PT_UNICODE o PT_OBJECT, se tratan de la siguiente manera. En primer lugar, el número de valores, codificados como un long sin signo de 32 bits, se coloca en el flujo TNEF, seguido de los valores individuales. Los datos de valor de cada propiedad se codifican como su tamaño en bytes seguidos de los propios datos de valor. Los datos de valor se rellenan hasta un límite de 4 bytes, aunque la cantidad de relleno no se incluye en el tamaño del valor.
Si la propiedad es de tipo PT_OBJECT, el tamaño del valor va seguido del identificador de interfaz del objeto. La implementación actual de TNEF solo admite los identificadores de interfaz IID_IMessage, IID_IStorage y IID_Istream. El tamaño del identificador de interfaz se incluye en el tamaño del valor.
Si el objeto es un mensaje incrustado (es decir, tiene un tipo de propiedad de PT_OBJECT y un identificador de interfaz de IID_Imessage), los datos de valor se codifican como una secuencia TNEF incrustada. La codificación real de un mensaje incrustado en la implementación de TNEF se realiza abriendo un segundo objeto TNEF para la secuencia original y procesando la secuencia insertada.