_MAPIProp object

 

_MAPIProp is the base interface from which other RDO objects are derived: IRDOFolder, IRDOAddressBook, IRDOStore, IRDOMail, IRDOAttachment, IRDOAddressEntry, IRDOAddressList

It corresponds to the IMAPIProp Extended MAPI interface.

 

The example below connects to a MAPI session retrieved from the Outlook Object Model, opens the given Outlook MailItem as Redemption.RDOMail (which is derived from _MAPIProp), then displays the subject of the message using various techniques: using a DASL schema property name and the regular PR_SUBJECT Extended MAPI property tag.

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Mail = Session.GetMessageFromID(MailItem.EntryID)

 

'display the subject using a DASL schema name
MsgBox Mail.Fields("urn:schemas:httpmail:subject")

 

'or display the subject using a DASL schema name that treats the subject as a generic MAPI property

MsgBox Mail.Fields("http://schemas.microsoft.com/mapi/proptag/0x0037001E")

 

'or we can also use the regular PR_xxx integer property tag

PR_SUBJECT = &H0037001E

MsgBox Mail.Fields(PR_SUBJECT)

 

The following example accesses the Inbox folder and opens the PR_CONTAINER_CONTENTS property as Redemption.MAPITable object, and displays the number of items in the folder. Note that the same result can be achieved by using the RDOFolder.Items.Count property

PR_CONTAINER_CONTENTS = &H360F000D
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetDefaultFolder(olFolderInbox)
set MAPITable = Folder.Fields(PR_CONTAINER_CONTENTS)
MsgBox MAPITable.RowCount

 

Properties

Methods

 


Derived from: IDispatch


Properties


Fields(PropTag)

Returns or sets an Extended MAPI property

PropTag - either a DASL property name or an in integer Extended MAPI property tag. CDO named property format (see CDOLive) is also supported.

You can use one of the MAPITags enumeration elements, e.g. MAPITags.PR_SUBJECT.

E.g. to read the PR_SUBJECT property, one can use the following values of the PropTag parameter:

0x0037001E (integer)

"urn:schemas:httpmail:subject"

"http://schemas.microsoft.com/mapi/proptag/0x0037001E"

E.g. to access the ReminderSet named property ({00062008-0000-0000-C000-000000000046}, 0x8503, PT_BOOLEAN), one can use either call GetIDsFromNames to retrieve the integer prop tag and then use Fields or skip GetIDsFromNames and use Fields with one of the following tags:

"http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8503000B"

"{0820060000000000C000000000000046}0x8503"

 

Scalar properties are returned as variants of the corresponding type (e.g. PT_STRING8 and PT_UNICODE properties are returned as strings, PT_LONG as integers, etc).

For the object properties (PT_OBJECT, such as PR_CONTAINER_CONTENTS, PR_ACL_TABLE, etc) Redemption tries to open them as IMAPITable Extended MAPI object and, if successful, returns an instance of the Redemption.MAPITable object

 

See example above and below

MAPIOBJECT

IUnknown, read-only.

Returns the Extended MAPI object used internally by the RDO object; e.g. IMessage for the RDOMailObject, IMailUser for RDOAddressEntry, etc.

 

 

Session

RDOSession, read-only. Returns the parent Session object

 


Methods


GetIDsFromNames(GUID, ID)

Returns an id suitable for use in the Fields() collection given the GUID (as string) and ID (can be either integer or a string).

For the discussion of the named properties, see the Extended
MAPI properties
section, especially the section on named properties.

'Is the reminder set for the given message?

PT_BOOLEAN = &H000B

PR_REMINDER_SET = RDOMail.GetIdsFromNames("{00062008-0000-0000-C000-000000000046}", &H8503)

PR_REMINDER_SET = PR_REMINDER_SET or PT_BOOLEAN

MsgBox RDOMail.Fields(PR_REMINDER_SET)

'the same property can be accessed using the DASL property name

MsgBox RDOMail.Fields("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8503000B")

'or using the CDO 1.21 named property tag format

MsgBox RDOMail.Fields("{0820060000000000C000000000000046}0x8503")

GetPropList(Flags, UseUnicode)

Returns PropList collection that represents all properties exposed by the object.

 

Flags - integer. Not currently used.

UseUnicode, optional, boolean. Pass TRUE to force GetPropList to return Unicode property tags.

 

set PropList = RDOMail.GetPropList
for i = 1 to PropList.Count
  Debug.Print(Hex(PropList(i)))
Next

GetNamesFromIDs(MAPIProp, PropTag)

Given a prop tag (>=0x80000000), returns the GUID and id of the named property. This is the reverse of the GetIDsFromNames method.

Returns a NamedProperty object which exposes two properties: GUID (string) and ID (either an integer or a string)

 

MAPIProp - IUnknown. Not used, pass NULL.

PropTag - integer, the named property tag (>=0x80000000).

 

 

CopyTo(DestObj)

Copies the object to the target object. The exact behavior depends on the source and target objects.

 

 

Save

Saves the object. Note that some objects (such as Store) are not transacted, hence Save is not required. Other objects (such as messages) require the changes to be saved if you want to persist them.

RDOMail.Subject = "New subject"

RDOMail.Save