none
MS-OXTNEF: NamedProperties Id generation RRS feed

  • Question

  • Named properties are identified by a Guid and either a string identifier (for string named properties) or a uint identifier (for numerical named properties), If I want to create a Tnef named property, how can I generate the property id if I know the Guid and the identifier? 

    Thanks


    Monday, November 10, 2014 6:27 PM

Answers

  • Hello Majdoleen,

    Thank you very much for your patience during the length of time it's taken to provide a response. When encoding named properties, the MsgPropertyID value can be set to any value >= 0x8000. There is no requirement that named properties use unique MsgPropertyID values. The ABNF in §2.1.3.4 confirms this:

    ; This property MUST be present when MsgPropertyId is >= 0x8000 (the minimum value
    ; of property ID for named properties, as specified in
    ; [MS-OXPROPS] section 1.3.3).
    NamedPropSpec = PropNameSpace PropIDType PropMap

    ; An arbitrary value that corresponds to the property.
    MsgPropertyID = UINT16

    This probably isn't as clear as it could be. I'll file an issue to make a more clear statement about what is expected here in a future release of [MS-OXTNEF].

    Hopefully this resolves the question for you. Please let me know if it does not.

    Best regards,
    Matt Weber | Microsoft Open Specifications Team

    Wednesday, December 3, 2014 6:15 PM

All replies

  • Majdoleen,

    Thank you for your question.  An engineer from the protocols team will contact you soon.


    Bryan S. Burgin Senior Escalation Engineer Microsoft Protocol Open Specifications Team

    Monday, November 10, 2014 8:57 PM
    Moderator
  • Hello Majdoleen,

    I am the engineer who will be working with you on this issue. I am currently researching your request and will provide you with an update soon. Thank you for your patience.

    Best regards,
    Matt Weber | Microsoft Open Specifications Team

    Tuesday, November 11, 2014 3:01 PM
  • Hello Majdoleen,

    If I understand correctly, you are trying to generate the correct TNEF structure for a named property. If that's the case, you'll need to follow the format outlined in §2.1.3.4, which describes using the attMsgProps or attAttachment attributes to encapsulate attributes that are not TNEF-defined. If you have a more specific question about what this section describes, or if I've misunderstood what you're asking for, please let me know.

    Specifically, this section of §2.1.3.4 appears to be the most relevant place to start:

    ; This property MUST be present when MsgPropertyId is >= 0x8000 (the minimum value
    ; of property ID for named properties, as specified in
    ; [MS-OXPROPS] section 1.3.3).
    NamedPropSpec = PropNameSpace PropIDType PropMap

    ; Contains a GUID, as specified in [MS-OXCDATA], to specify the namespace.
    ; The TNEF Writer obtains this value by using the RopGetNamesFromPropertyIDs ROP, 
    ; as specified in [MS-OXCROPS] section 2.2.8.2.
    PropNameSpace = GUID
    PropIDType = IDTypeNumber / IDTypeString
    PropMap = PropMapID / PropMapString

    Best regards,
    Matt Weber | Microsoft Open Specifications Team

    Tuesday, November 11, 2014 5:44 PM
  • Hello Mr. Weber,

    Yes, I want to generate a correct TNEF structure for a Named property but when I tried to do so using the section you specified (2.1.3.4) : 

    MsgPropertyList = MsgPropertyCount *MsgPropertyValue
    MsgPropertyCount = UINT32
    MsgPropertyValue = MsgPropertyTag MsgPropertyData

    MsgPropertyTag = MsgPropertyType MsgPropertyId [NamedPropSpec]

    NamedPropSpec = PropNameSpace PropIDType PropMap

    PropNameSpace = GUID
    PropIDType = IDTypeNumber / IDTypeString
    PropMap = PropMapID / PropMapString
    IDTypeNumber = %x00.00.00.00
    IDTypeString = %x01.00.00.00

    PropMapID = UINT32

    PropMapString = UINT32 *UINT16 %x00.00 [PropMapPad]

    When I wanted to create a  MsgPropertyTag for the named property, I can set the MsgPropertype and the NamedPropSpec but how can I generate the value of the MsgPropertyId ? 

    Here is an example:
    Let's take the PidNameAcceptLanguage property which is identified in MS-OXPROPS section 2.366, 

    2.366 PidNameAcceptLanguage

    Canonical name: PidNameAcceptLanguage
    Description: Contains the value of the MIME Accept-Language header.
    Property set: PS_INTERNET_HEADERS {00020386-0000-0000-C000-000000000046}
    Property name: Accept-Language
    Data type: PtypString, 0x001F
    Area: Email
    Defining reference: [MS-OXCMSG] section 2.2.1.42
    Consuming reference: [MS-OXCMAIL]
    Alternate names: AcceptLanguage

    From these values I can set the MsgPropertyType  and the NamedPropSpec, but how can I set the MsgPropertyId? Is there is a way to generate the MsgPropertyId for the named properties?

    The solution I'm looking for is like what is mentioned in [MS-OXMSG] section 3.2.2, this section specifies a way to generate the PropertyId for the MSG named properties, in [MS-OXTNEF], nothing regarding this issue is mentioned,  so my question is: Is there is a formal equation specific to TNEF to generate PropertyId for the named properties? 

    Hope this helps you understand my question.

    Thanks a lot for your effort.

    Best Regards,
    Majdoleen


    Tuesday, November 11, 2014 9:52 PM
  • Hello Majdoleen,

    I am still working on providing an answer for this question for you. It may take a little while longer, but I'll update you as soon as I have more information.

    Best regards,
    Matt Weber | Microsoft Open Specifications Team

    Monday, November 17, 2014 6:03 PM
  •  Thanks a lot Mr. Matt Weber , I appreciate your efforts.
    Thursday, November 20, 2014 7:47 PM
  • Hello Majdoleen,

    Thank you very much for your patience during the length of time it's taken to provide a response. When encoding named properties, the MsgPropertyID value can be set to any value >= 0x8000. There is no requirement that named properties use unique MsgPropertyID values. The ABNF in §2.1.3.4 confirms this:

    ; This property MUST be present when MsgPropertyId is >= 0x8000 (the minimum value
    ; of property ID for named properties, as specified in
    ; [MS-OXPROPS] section 1.3.3).
    NamedPropSpec = PropNameSpace PropIDType PropMap

    ; An arbitrary value that corresponds to the property.
    MsgPropertyID = UINT16

    This probably isn't as clear as it could be. I'll file an issue to make a more clear statement about what is expected here in a future release of [MS-OXTNEF].

    Hopefully this resolves the question for you. Please let me know if it does not.

    Best regards,
    Matt Weber | Microsoft Open Specifications Team

    Wednesday, December 3, 2014 6:15 PM
  • Thank you so much Mr. Matt Weber, this answers my question.
    Thursday, December 4, 2014 12:05 PM