3.1.5.1 Sending a RopOpenMessage ROP Request
To send the RopOpenMessage ROP request ([MS-OXCROPS] section 2.2.6.1) , the client first obtains the MID ([MS-OXCDATA] section 2.2.1.2) for the Message object to be opened, and either the FID ([MS-OXCDATA] section 2.2.1.1) or the LogonID. The MID is accessible from the contents table of the Folder object that contains the Message object by including the PidTagMid property ([MS-OXCFXICS] section 2.2.1.2.1) in a RopSetColumns ROP request ([MS-OXCROPS] section 2.2.5.1), as specified in [MS-OXCTABL] section 2.2.2.2.
To open a soft deleted Message object, the client MUST include the OpenSoftDeleted flag in the OpenModeFlag field.
When the client receives the response buffer, it can cache the data from the NormalizedSubject and SubjectPrefix fields to minimize further calls to the server; it then updates the cache when issuing a RopSetProperties ROP request ([MS-OXCROPS] section 2.2.8.6) for the PidTagNormalizedSubject property (section 2.2.1.10) and the PidTagSubjectPrefix property (section 2.2.1.9) and uses the cached values.
The client uses the opened Message object in subsequent ROPs; it MUST eventually send a RopRelease ROP request ([MS-OXCROPS] section 2.2.15.3) on the Message object and, after doing so, MUST NOT use the Message object for any subsequent ROPs.
The client is responsible for maintaining the privacy of the properties on the Message object when the PidLidPrivate property (section 2.2.1.15) is set to 0x01.
If a client does not recognize a message class, it reverts to acting on all but the last group, recursively, until a recognized form remains.