|
RDOItems object collection |
RDOItems collection represents the
child messages of a given RDOFolder object.
Returned by:
RDOFolder.Items, HiddenItems.
DeletedItems returns an
RDODeletedItems collection, which is derived
from RDOItems
The example below logs to the default
MAPI session and prints out the subjects of all the messages from the Inbox
folder:
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderInbox)
for each Msg in Folder.Items
Debug.Print(Msg.Subject)
next |
Note that the performance of the code
enumerating through the RDOItems collection is significantly increased if
the collection's columns are preset with RDOItems.MAPITable.Columns
and only properties specified in the columns property are retrieved from the
returned items.
In this case the messages are never
opened and only the data from MAPI table is used. If a property not specified in
columns is requested or if the message is modified, the item will be opened
resulting in degraded performance.
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderInbox)
set Items = Folder.Items
'let Redemption know which
properties we will be requesting later
Items.MAPITable.Columns = "Subject, SenderName"
Items.MAPITable.Sort "ReceivedTime", false
for each Item in Items
'read the
properties specified in the MAPITable.Columns property above
Debug.Print Item.Subject & " - " & Item.SenderName
next |
Properties
Methods
Events
|
Derived from:
IDispatch
|
|
Properties |
|
Count |
integer, read-only. The
number of messages in the RDOItems collection |
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderInbox)
MsgBox "There are " &
Folder.Items.Count & " messages in " & Folder.Name |
RawTable |
IUnknown, read-only. Returns
the IMAPITable Extended MAPI interface used internally by the RDOItems
collection |
|
Session |
RDOSession, read-only. Returns the parent MAPI session represented
by the RDOSession object |
|
_Item(Index) |
Index - variant:
integer or a string. A default object property.
Retrieves a message with a
given index (1 to Count) or a given subject
Returns
RDOMail object |
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderInbox)
for i = 1 to Folder.Items.Count
Debug.Print Folder.Items(i).Subject
next |
MAPITable |
MAPITable, read-only. Returns the MAPITable Redemption object which
can be used to manipulate the collection (restrict, find, etc). |
'sort all items in the Inbox by
Subject and loop through them
PR_NORMALIZED_SUBJECT = &H0E1D001E
set Session = CreateObject("Redemption.RDOSession")
Session.Logon
set Folder = Session.GetDefaultFolder(olFolderInbox)
set Items = Folder.Items
Items.MAPITable.Sort PR_NORMALIZED_SUBJECT, false
for each item in Items
Debug.Print(item.Subject)
next
'Print out the subject and entry
id of all messages in the Inbox
'received in January 2007
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
Set folder = Session.GetDefaultFolder(olFolderInbox)
set Items = folder.Items
set Recordset = Items.MAPITable.ExecSQL("SELECT Top 5 Subject, EntryID from
Folder " & _
"where (ReceivedTime >= '2007-01-01')
and (ReceivedTime <= '2007-02-01') " & _
"order by ReceivedTime desc")
while not Recordset.EOF
Debug.Print(Recordset.Fields("Subject").Value & " - " &
Recordset.Fields("EntryID").Value)
Recordset.MoveNext
wend
|
|
Methods |
|
Add(Type) |
Adds a new message to the
folder. Returns the newly added RDOMail
object.
Type - variant,
optional. either string specifying the message class (e.g. "IPM.Note")
or a file name (see below)
or one of the OlItemType values (integer), e.g. olPostItem.
If a fully qualified file
name is passed in, Add returns an
RDODocumentItem object with its
properties appropriately populated.
|
set Session =
CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Inbox = Session.GetDefaultFolder(olFolderInbox)
set Msg = Inbox.Items.Add("IPM.Note")
Msg.BCC = "dmitry@dimastr.com; outspy@dimastr.com"
Msg.Subject = "test"
Msg.Save |
Find(Filter) |
Locates and returns the first
item (RDOMail or an appropriate object derived
from RDOMail, such as
RDOContactItem) matching the specified
SQL style query (see example).
If no item matches the query,
null is returned.
To locate subsequent matching
items, call FindNext repeatedly until null is returned.
See also Restrict
method.
Filter - string. SQL
style query specifying the condition. Can either be a WHERE part only
(e.g. "LastName = 'Streblechenko' ") or a complete SQL expression with
the SELECT, WHERE and ORDER BY clauses (see example).
The properties specified in
the SQL query must either use the Outlook Object Model (or RDO) property
name (e.g. Subject, Email1Address) or a DASL style
property name (e.g. "http://schemas.microsoft.com/mapi/proptag/0x0037001E",
"http://schemas.microsoft.com/mapi/id/{00062004-0000-0000-C000-000000000046}/8083001E")
When a DASL property name is
used, it must be enclosed in double quotes.
Use
OutlookSpy
to figure out the DASL property names - select an item in Outlook, click
IMessage button on the
OutlookSpy
toolbar, select the property, see the "DASL" edit box on he right hand
side of the window.
Including the SELECT clause
allows Redemption to pre-fetch the properties from the folder contents
table without opening the item resulting in a significant performance
gain (see example). If you later access a property not specified in the
SELECT clause, Redemption will open the item.
Including the ORDER BY clause
sorts the collection in the specified order.
|
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Contacts = Session.GetDefaultFolder(olFolderContacts)
set Items = Contacts.Items
set Contact = Items.Find("SELECT Email1Address, FileAs from Folder " & _
" WHERE LastName = 'Streblechenko' " & _
" ORDER BY FirstName desc")
while Not (Contact Is Nothing)
Debug.Print Contact.FileAs & ": " & Contact.Email1Address
set Contact = Items.FindNext
wend
|
FindNext |
Returns the next object
matching the restriction specified in a previous call to Find. It
returns null if no next object exists, for example, if already
positioned at the end of the collection.
An error will be raised if
the Find method was not previously called.
|
see example above |
GetFirst |
Returns the first message in
the specified RDOItems collection. Returns Nothing if no first message
exists, for example, if there are no messages. |
|
GetLast |
Returns the last message in
the specified RDOItems collection. Returns Nothing if no last message exists, for example, if there are no
messages. |
|
GetNext |
Returns the next message in
the specified RDOItems collection. It returns Nothing if no next
message exists, for example, if already positioned at the end of the
collection. |
|
GetPrevious |
Returns the previous message in the specified RDOItems collection. It returns Nothing if no
previous message exists, for example, if already positioned at the
beginning of the collection. |
|
CopyMultiple(EntryIdsOrArrayOfMessages,
TargetFolder) |
Copy multiple messages in
a single call.
See also MoveMultiple method.
EntryIdsOrArrayOfMessages - either an array of messages, array
of entry ids (strings), or a string with multiple entry ids separated by
";" or CR/LF.
TargetFolder -
RDOFolder object that specifies the destination folder where the messages
must be copied. |
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
Dim Messages()
set Selection = Application.ActiveExplorer.Selection
Redim Messages(Selection.Count)
for i = 1 to Selection.Count
Messages(i-1) = Application.ActiveExplorer.Selection(i).EntryID
next
Folder.Items.CopyMultiple Messages,
Session.GetDefaultFolder(olFolderInbox)
|
MoveMultiple(EntryIdsOrArrayOfMessages,
TargetFolder) |
Move multiple messages in
a single call.
See also CopyMultiple
method.
EntryIdsOrArrayOfMessages - either an array of messages, array
of entry ids (strings), or a string with multiple entry ids separated by
";" or CR/LF.
TargetFolder -
RDOFolder object that specifies the destination folder where the messages
must be moved. |
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
Dim Messages()
set Selection = Application.ActiveExplorer.Selection
Redim Messages(Selection.Count)
for i = 1 to Selection.Count
Messages(i-1) = Application.ActiveExplorer.Selection(i).EntryID
next
Folder.Items.MoveMultiple Messages,
Session.GetDefaultFolder(olFolderInbox)
|
Item(Index) |
Index - variant:
integer or a string.
Retrieves a message with a
given index (1 to Count) or a given subject
Returns
RDOMail object |
|
Remove(Index,
DeleteFlags) |
Deletes a message with the
specified index (1 to Count)
Index - integer, 1
through Count DeleteFlags
- integer, optional. One of the redDeleteFlags enumeration values:
dfSoftDelete (0) - default. Deletes the item. Can still be
recoverable if retention policy is set on Exchange Server.
dfMoveToDeletedItems (1) - the item is moved to the Deleted Items
folder dfHardDelete (2)
- Exchange only. Permanently deletes the item; will not be recoverable |
|
RemoveMultiple(EntryIdsOrArrayOfMessages,
DeleteFlags) |
Deletes multiple messages in
a single call.
See also
RDOFolder.EmptyFolder method.
EntryIdsOrArrayOfMessages - either an array of messages, array
of entry ids (strings), or a string with multiple entry ids separated by
";" or CR/LF. DeleteFlags
- integer, optional. One of the redDeleteFlags enumeration values:
dfSoftDelete (0) - default. Deletes the item. Can still be
recoverable if retention policy is set on Exchange Server.
dfMoveToDeletedItems (1) - the item is moved to the Deleted Items
folder dfHardDelete (2)
- Exchange only. Permanently deletes the item; will not be recoverable |
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
Dim Messages()
Redim Messages(Application.ActiveExplorer.Selection.Count)
for i = 1 to Application.ActiveExplorer.Selection.Count
Messages(i-1) = Application.ActiveExplorer.Selection(i).EntryID
next
Folder.Items.RemoveMultiple(Messages) |
Restrict(Filter) |
Applies a filter to the
RDOItems collection, returning a new RDOItems collection
containing all of the items from the original that match the filter. The
original RDOItems collection is not affected.
This method is an alternative
to using the Find method or FindNext method to iterate
over specific items within a collection. The Find or FindNext
methods are faster than filtering if there are a small number of items.
The Restrict method is significantly faster if there is a large
number of items in the collection, especially if only a few items in a
large collection are expected to be found.
Note however that Exchange
Server in the online mode caches the restriction (1 week by default) and
recalculates it every time any item in the folder is modified.
If your restriction is
constant, this can be lead to a significant performance boost. If
however you apply different restrictions, this can significantly degrade
the server performance.
Filter - string. SQL
style query. See Find method help for more information
|
set Session =
CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Contacts = Session.GetDefaultFolder(olFolderContacts)
set Items = Contacts.Items
set RestrictedItems = Items.Restrict("SELECT Email1Address, FileAs from
Folder " & _
" where LastName = 'Streblechenko' " & _
" ORDER BY FirstName desc")
for each Contact in RestrictedItems
Debug.Print Contact.FileAs & ": " & Contact.Email1Address
next |
Sort(Columns, Descending) |
Sorts the collection of items
by the specified property or properties.
Columns - can either
be an integer property tag or a variant array of integer property tags
or a comma separated string of the OOM or DASL property names (see
example)
Descending - optional.
Either a boolean or
a variant array of boolean values corresponding to the Columns parameter.
|
set Session =
CreateObject("Redemption.RDOSession")
Session.Logon
set Contacts = Session.GetDefaultFolder(olFolderInbox)
set Items = Contacts.Items
Items.Sort "Subject", false
for each Item in Items
Debug.Print Item.Subject
next
|
|
Events: |
|
ItemChange(Item) |
Fires when a message in the
contents or associated contents table is modified.
Item -
RDOMail object
|
|
ItemAdd(Item) |
Fires when a new message is
added to the contents or associated contents table.
Item -
RDOMail object |
Dim WithEvents Items As
Redemption.RDOItems
...
Set Session = New
Redemption.RDOSession
Session.Logon
Set Store = Session.Stores.DefaultStore
Set Inbox = Store.GetDefaultFolder(olFolderInbox)
Set Items = Inbox.Items
...
Sub Items_ItemAdd(ByVal Mail
As RDOMail)
MsgBox "Item added: " & Mail.Subject
End Sub
|
ItemRemove(InstanceKey) |
Fires when a message is
removed from the contents or associated contents table.
By the time this asynchronous even is fired, the message is already
deleted, hence no entry id is available.
InstanceKey - a hex
value of the PR_INSTANCE_KEY property of the deleted table row. Note
that PR_INSTANCE_KEY is not available from the message itself, only from
the MAPI table (see MAPITable property). InstanceKey is only guaranteed
to be the same for the same instance of the table, hence this event is
useful only if the value of PR_INSTANCE_KEY was previously cached.
|
|
CollectionModified |
Fires when the contents or
associated contents table is modified and the underlying MAPI
implementation cannot provide more detailed information about the
change, e.g. when too many messages were modified at the same time.
When the event fires, it must
be assumed that the entire contents of the collection are no longer
valid. |
|
|
|