4.2 Creating a Personal Distribution List

A user creates a personal distribution list that contains the previous sample contact and another email address (user1@example.com). The following is a description of what a client might do to accomplish the user's intentions and what responses a server might return.

Before manipulating Contact objects, the client needs to ask the server to map property names or long IDs (LIDs) to property IDs by using the RopGetPropertyIdsFromNames ROP ([MS-OXCROPS] section 2.2.8.1).

Property

Property set GUID

LID

PidLidAutoLog (section 2.2.1.10.19)

{00062004-0000-0000-C000-000000000046}

0x00008025

PidLidAddressBookProviderArrayType (section 2.2.2.3.1)

{00062004-0000-0000-C000-000000000046}

0x00008029

PidLidFileUnder (section 2.2.2.1.3)

{00062004-0000-0000-C000-000000000046}

0x00008005

PidLidFileUnderId (section 2.2.2.1.4)

{00062004-0000-0000-C000-000000000046}

0x00008006

PidLidDistributionListName (section 2.2.2.1.2)

{00062004-0000-0000-C000-000000000046}

0x00008053

PidLidDistributionListChecksum (section 2.2.2.2.3)

{00062004-0000-0000-C000-000000000046}

0x0000804C

PidLidDistributionListMembers (section 2.2.2.2.1)

{00062004-0000-0000-C000-000000000046}

0x00008055

PidLidDistributionListOneOffMembers (section 2.2.2.2.2)

{00062004-0000-0000-C000-000000000046}

0x00008054

For this example, the server returns the following property IDs in response to the RopGetPropertyIdsFromNames ROP request ([MS-OXCROPS] section 2.2.8.1). The actual property IDs are at the discretion of the server.

Property

Property ID

PidLidAutoLog

0x8280

PidLidAddressBookProviderArrayType

0x81D5

PidLidFileUnder

0x8016

PidLidFileUnderId

0x81DA

PidLidDistributionListName

0x81C9

PidLidDistributionListChecksum

0x81C7

PidLidDistributionListMembers

0x81C8

PidLidDistributionListOneOffMembers

0x81CA

To create a Personal Distribution List object, the client uses the RopCreateMessage ROP ([MS-OXCROPS] section 2.2.6.2). The server returns a success code and a handle to a Message object.

The properties of the Contact object are set according to data that is specified by the user. After the user has input content the data for the Personal Distribution List object, the client uses the RopSetProperties ROP ([MS-OXCROPS] section 2.2.8.6) to transmit the property settings to the server. The properties and their settings for this example are listed in the following table. The property types shown in the table are described in [MS-OXCDATA] section 2.11.1.

Property

Property type

Data

Meaning

PidTagDisplayNamePrefix (section 2.2.1.1.3)

PtypString

 00   00
 ""

PidLidAddressBookProviderArrayType (section 2.2.2.3.1)

PtypInteger32

 0x00000000
 0

PidLidFileUnder

PtypString

 46   00 72 00 69 00 65 00 6E 00 64 00 73 00 00 00
 "Friends"

PidLidFileUnderId

PtypInteger32

 0xFFFFFFFF
 -1

PidLidAutoLog

PtypBoolean

 0x00
 FALSE

PidTagDisplayName (section 2.2.2.1.1)

PtypString

 46   00 72 00 69 00 65 00 6E 00 64 00 73 00 00 00
 "Friends"

PidLidDistributionListName

PtypString

 46   00 72 00 69 00 65 00 6E 00 64 00 73 00 00 00
 "Friends"

PidLidDistributionListChecksum

PtypInteger32

 0xD4B0223A
 -726654406

PidLidDistributionListMembers

PtypMultipleBinary

 02   00 00 00
  
 64   00
 00   00 00 00 81 2B 1F A4 BE A3
 10   19 9D 6E 00 DD 01 0F 54 02 
 00   00 01 80 54 00 68 00 6F 00 
 6D   00 61 00 73 00 20 00 48 00 
 61   00 6D 00 62 00 6F 00 72 00 
 67   00 00 00 53 00 4D 00 54 00 
 50   00 00 00 75 00 73 00 65 00 
 72   00 31 00 40 00 65 00 78 00 
 61   00 6D 00 70 00 6C 00 65 00 
 2E   00 63 00 6F 00 6D 00 00 00 
  
 5B   00
 00   00 00 00 C0 91 AD D3 51 9D 
 CF   11 A4 A9 00 AA 00 47 FA A4 
 C3   00 00 00 00 C2 42 42 82 60 
 00   16 47 AD A9 5C 07 77 B7 4B 
 E2   07 00 61 2A 7B AB 49 F6 4E 
 4B   9C 52 DB FB 5A 53 AA 1C 00 
 00   00 F0 4E A6 00 00 61 2A 7B 
 AB   49 F6 4E 4B 9C 52 DB FB 5A 
 53   AA 1C 00 00 00 F0 D5 B0 00 
 00
 2   binary large objects
 (BLOBs)   to follow
  
 BLOB1   Size: 100 bytes
 .....+..
 .....n..
 ..T.....
 T.h.o.m.
 a.s.   .H.
 a.m.b.o.
 r.g...S.
 M.T.P...
 u.s.e.r.
 1.@.e.x.
 a.m.p.l.
 e...c.o.
 m...
  
 BLOB2   Size: 91 bytes
 ........
 Q.......
 .G......
 ..BB.`..
 G..\.w.K
 ...a*{.I
 .NK.R..Z
 S......N
 ...a*{.I
 .NK.R..Z
 S.......
 ...   

PidLidDistributionListOneOffMembers

PtypMultipleBinary

 02   00 00 00
  
 64   00
 00   00 00 00 81 2B 1F A4 
 BE   A3 10 19 9D 6E 00 DD 
 01   0F 54 02 00 00 01 80 
 54   00 68 00 6F 00 6D 00 
 61   00 73 00 20 00 48 00 
 61   00 6D 00 62 00 6F 00 
 72   00 67 00 00 00 53 00 
 4D   00 54 00 50 00 00 00 
 75   00 73 00 65 00 72 00 
 31   00 40 00 65 00 78 00 
 61   00 6D 00 70 00 6C 00 
 65   00 2E 00 63 00 6F 00 
 6D   00 00 00
  
 AC   00
 00   00 00 00 81 2B 1F A4 
 BE   A3 10 19 9D 6E 00 DD 
 01   0F 54 02 00 00 01 80 
 75   00 73 00 65 00 72 00 
 31   00 30 00 20 00 28 00 
 75   00 73 00 65 00 72 00 
 31   00 30 00 40 00 73 00 
 7A   00 66 00 6B 00 75 00 
 6B   00 2D 00 64 00 6F 00 
 6D   00 2E 00 65 00 78 00 
 6A   00 6D 00 70 00 6C 00 
 65   00 2E 00 63 00 6F 00 
 6D   00 29 00 00 00 53 00 
 4D   00 54 00 50 00 00 00 
 75   00 73 00 65 00 72 00 
 31   00 30 00 40 00 73 00 
 7A   00 66 00 6B 00 75 00 
 6B   00 2D 00 64 00 6F 00 
 6D   00 2E 00 65 00 78 00 
 6A   00 6D 00 70 00 6C 00 
 65   00 2E 00 63 00 6F 00 
 6D   00 00 00
 2   BLOBs to follow
  
 BLOB1   Size: 100 bytes
 .....+..
 .....n..
 ..T.....
 T.h.o.m.
 a.s.   .H.
 a.m.b.o.
 r.g...S.
 M.T.P...
 u.s.e.r.
 1.@.e.x.
 a.m.p.l.
 e...c.o.
 m...
  
 BLOB2   Size: 172 bytes
 .....+..
 .....n..
 ..T.....
 u.s.e.r.
 1.0.   .(.
 u.s.e.r.
 1.0.@.s.
 z.f.k.u.
 k.-.d.o.
 m...e.x.
 a.m.p.l.
 e...c.o.
 m.)...S.
 M.T.P...
 u.s.e.r.
 1.0.@.s.
 z.f.k.u.
 k.-.d.o.
 m...e.x.
 a.m.p.l.
 e...c.o.
 m...

PidTagMessageClass (section 2.2.2.4.2)

PtypString

 49   00 50 00 4D 00 2E 00 44 00 69 00 73 00 74 00 4C 00 69 00 73 00 74 00 00 00
 "IPM.DistList"

PidTagIconIndex ([MS-OXOMSG] section 2.2.1.10)

PtypInteger32

 0x00000202
 514

PidTagSubjectPrefix ([MS-OXOMSG] section 2.2.1.60)

PtypString

 00   00
 ""

PidTagSubject ([MS-OXPROPS] section 2.1033)

PtypString

 46   00 72 00 69 00 65 00 6E 00 64 00 73 00 00 00
 "Friends"

When the user is ready to save his or her changes, the client uses the RopSaveChangesMessage ROP ([MS-OXCROPS] section 2.2.6.3) to commit the properties on the server.

The values of some properties will change during the execution of the RopSaveChangesMessage ROP; however, none of the properties that change are Personal Distribution List object properties.