RDOStore object

 

RDOStore object represents a generic message store. Depending on the actual kind of the store (see StoreKind property below), the following methods will return store objects with extra properties and methods. E.g. RDOPstStore implements all the properties and methods of the RDOStore object plus implements an extra property specific to a PST store - PstPath.

 

See RDOPstStore, RDOStore2, RDOExchangeStore, RDOExchangeMailboxStore, RDOExchangePublicFoldersStore, RDOEASStore objects below.

 

Returned by:

RDOStores: Item, AddPSTStore, AddDelegateExchangeMailBoxStore, FindExchangePublicFoldersStore, GetSharedMailbox, GetStoreFromID

RDOSession.GetStoreFromID

RDOFolder.Store

RDOMail.Store

RDOIMAPAccount.Store

RDOHTTPAccount.Store

 

 

The example below logs to the default MAPI session and prints out the file names of the PST stores and Server Distinguished Name for the Exchange stores

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
for each Store in Session.Stores
  if (Store.StoreKind = skPstAnsi) or (Store.StoreKind = skPstUnicode) Then
    Debug.Print Store.Name & " - " & Store.PstPath
  ElseIf (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) or (Store.StoreKind = skPublicFolders) Then
    Debug.Print Store.Name & " - " & Store.ServerDN
  End If
next

 

Properties

Methods

Events

 


Derived from: _MAPIProp -


_MAPIProp methods and properties: GetIDsFromNames, Fields(), GetPropList, GetNamesFromIDs, CopyTo, Save, MAPIOBJECT, Session


Properties


StoreKind

Returns an enumeration representing the message store kind

StoreKind - TxStoreKind:

skUnknown = 0;
skPstAnsi = 1;
skPstUnicode = 2;
skPrimaryExchangeMailbox = 3;
skDelegateExchangeMailbox = 4;
skPublicFolders = 5

skBCM = 6

skIMAP4 = 7

skHotmail = 8

skEAS = 9

 

set Session = CreateObject("Redemption.RDOSession")
Session.Logon

NumPstStores = 0
for each Store in Session.Stores
  if (Store.StoreKind = skPstAnsi) or (Store.StoreKind = skPstUnicode) Then
    NumPstStores = NumPstStores + 1
next

MsgBox "You have " & NumPstStores & " PST stores in the profile"

Default

boolean, read-write. Returns true if the store is default in the given profile. Set to true to make the store default

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
Set Store = Session.Stores("Test PST Folders")
Store.Default = true

RootFolder

Returns RDOFolder object representing the root folder of the message store. Note that this folder is not visible to a user

 

IPMRootFolder

Returns RDOFolder object representing the top visible folder of the message store.

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
Set Store = Session.Stores("Personal Folders")
set RootFolder = Store.IPMRootFolder
Debug.Print "Top Level folders in " & Store.Name & ":"
for each Folder in RootFolder.Folders
  Debug.Print Folder.Name
next

SearchRootFolder

Returns RDOFolder object representing the top search folder of the message store.

 

EntryID

string, read-only. Returns the entry id of the store

 

Name

string, read-write. Reads/sets the name of the store.

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
set Store = Session.DefaultStore

MsgBox Store.Name

Reminders

Returns RDOReminders object representing the reminders collection for a given store.

'snooze all active reminders for 2 minutes
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = Session.Stores.DefaultStore
set Reminders = Store.Reminders
for each Reminder in Reminders
  if Reminder.IsVisible Then
    Reminder.Snooze(2) '
snooze for 2 minutes
  End If
next

StoreAccount

returns RDOAccount object corresponding to the Outlook account associated with the store. Read-only.

Outlook 2002 and up only.

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
for each Store in Session.Stores
  set Account = Store.StoreAccount
  if not (Account Is Nothing) Then
    Debug.Print "Store """ & Store.Name & """ is associated to account """ & Account.Name & """. (type """ & Account.AccountTypeStr & """)"
  End If
next


Methods


GetDefaultFolder(FolderType)

FolderType - integer. The type of default folder to return. Accepts the same values as Namespace.GetDefaultFolder method in Outlook Object Model (olFolderInbox, olFolderContacts, etc).

Returns RDOFolder object.

Note that unlike RDOSession.GetDefaultFolder or RDOStores.GetDefaultFolder , which return default folders from the default store, this method returns the default folder from a given store, which does not have to be the default store.

E.g. if you open a delegate Exchange mailbox, this method will return the default folder of the mailbox owner. This also applies to multiple PST stores, if they have the default folder structure set up.

 

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
set Inbox = Session.DefaultStore.GetDefaultFolder(olFolderInbox)
for each Msg in Inbox.Items
  Debug.Print(Msg.Subject)
next

AbortSubmit(MessageEntryID)

Aborts message submission for a given message.

MessageEntryID - string. The entry id of a message marked for submission.

 

CompareEntryIDs(EntryID1, EntryID2)

Checks whether the two entry ids refer to the same MAPI object. Note that entry ids cannot be directly compared and multiple entry ids can refer to the same object (e.g. in case of long term vs. short term entry id).

EntryID1 - string, entry id of the first object

EntryID2 - string, entry id of the second object

 

GetMessageFromID(EntryIDMessage, Flags)

EntryIDMessage - string representing the entry id of the message

Flags - (optional). integer flags to be used to call IMAPISession::OpenEntry. By default MAPI_BEST_ACCESS (0x10) is used. This parameter is most useful if you need to bypass the cached mode in Outlook 2003. E.g. passing MAPI_NO_CACHE (0x200) +  MAPI_BEST_ACCESS (0x10) will open the message in the best access mode bypassing the cached store.

Returns RDOMail object.

 

 

GetFolderFromID(EntryIDFolder, Flags)

EntryIDFolder - string representing the entry id of the folder

Flags - (optional). integer flags to be used to call IMAPISession::OpenEntry. By default MAPI_BEST_ACCESS (0x10) is used. This parameter is most useful if you need to bypass the cached mode in Outlook 2003. E.g. passing MAPI_NO_CACHE (0x200) +  MAPI_BEST_ACCESS (0x10) will open the folder in the best access mode bypassing the cached store.

Returns RDOFolder object.

 

 

Remove

Removes the given store from the profile.

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
Set Store = Session.Stores("Test PST Folders")
Store.Remove


Events:


OnNewMail(EntryID)

Fires when a new message is delivered to the Inbox of the store.

EntryID - string, entry id (in hex) of the newly delivered message. Note that under Exchange, the entry id is a short term entry id. To retrieve the long term entry id, open the message (e.g. using RDOSession.GetMessageFromID), then read the EntryID property from the RDOMail object.

Dim WithEvents Store As Redemption.RDOStore
...

Set Session = New Redemption.RDOSession
Session.Logon

Set Store = Session.Stores.DefaultStore

...

Sub Store_OnNewMail(ByVal EntryID As String)
  Dim Msg As Redemption.RDOMail
  Set Msg = Store.GetMessageFromID(EntryID)
  MsgBox "Store_OnNewMail: " & Msg.Subject
End Sub

 

OnMessageCreated(EntryID)

Fires when a message is created in the store.

EntryID - string, entry id (in hex) of the message.

 

 

OnMessageCreatedEx(EntryID, ParentEntryID)

 

Fires when a message is created in the store.

EntryID - string, entry id (in hex) of the message.

ParentID - entry id of the parent folder

 

 

OnFolderCreated(EntryID)

Fires when a folder is created in the store.

EntryID - string, entry id (in hex) of the folder.

 

 

OnMessageCopied(EntryID)

Fires when a message is copied in the store.

EntryID - string, entry id (in hex) of the message.

 

 

OnFolderCopied(EntryID)

Fires when a folder is copied in the store.

EntryID - string, entry id (in hex) of the folder.

 

 

OnMessageDeleted(EntryID)

Fires when a message is deleted in the store.

EntryID - string, entry id (in hex) of the message.

 

 

OnMessageDeletedEx(EntryID, ParentEntryID)

 

Fires when a message is deleted in the store.

EntryID - string, entry id (in hex) of the message.

ParentID - entry id of the parent folder

 

 

OnFolderDeleted(EntryID)

Fires when a folder is deleted in the store.

EntryID - string, entry id (in hex) of the folder.

 

 

OnMessageModified(EntryID)

Fires when a message is modified in the store.

EntryID - string, entry id (in hex) of the message.

 

Dim WithEvents Store As Redemption.RDOStore
...

Set Session = New Redemption.RDOSession
Session.Logon

Set Store = Session.Stores.DefaultStore

...

Sub Store_OnMessageModified(ByVal EntryID As String)
  Dim Msg As Redemption.RDOMail
  Set Msg = Store.GetMessageFromID(EntryID)
  MsgBox "Store_OnMessageModified: " & Msg.Subject
End Sub
 

OnMessageModifiedEx(EntryID, ParentEntryID)

Fires when a message is modified in the store.

EntryID - string, entry id (in hex) of the message.

ParentID - entry id of the parent folder

 

 

OnFolderModified(EntryID)

Fires when a folder is modified in the store.

EntryID - string, entry id (in hex) of the folder.

 

 

OnMessageMoved(EntryID)

Fires when a message is moved in the store.

EntryID - string, entry id (in hex) of the message.

 

 

OnMessageMovedEx(EntryID, OldParentEntryID, NewParentEntryID)

Fires when a message is moved in the store.

EntryID - string, entry id (in hex) of the message.

OldParentEntryID - string, entry id (in hex) of the old parent folder.

NewParentEntryID - string, entry id (in hex) of the new parent folder.

 

Dim WithEvents Store As Redemption.RDOStore
...

Set Session = New Redemption.RDOSession
Session.Logon

Set Store = Session.Stores.DefaultStore

...

Sub Store_OnMessageMovedEx(ByVal EntryID As String, ByVal OldParentEntryID As String, ByVal NewParentEntryID As String)
  Dim Msg As Redemption.RDOMail
  Dim OldParent As Redemption.RDOFolder
  Dim NewParent As Redemption.RDOFolder
  Set Msg = Store.GetMessageFromID(EntryID)
  Set OldParent = Store.GetFolderFromID(OldParentEntryID)
  Set NewParent = Store.GetFolderFromID(NewParentEntryID)
  MsgBox "Store_OnMessageModifiedEx: " & Msg.Subject & _
                "; Old parent: " & OldParent.Name & _

                "; New parent: " & NewParent.Name
End Sub
 

OnMessageMoved3(EntryID, OldParentEntryID, NewParentEntryID, OldEntryID)

Fires when a message is moved in the store.

EntryID - string, entry id (in hex) of the message.

OldParentEntryID - string, entry id (in hex) of the old parent folder.

NewParentEntryID - string, entry id (in hex) of the new parent folder.

OldEntryID - string, old entry id (hex) of the message. Note that PST provider always passes an empty old entry id, but moving a folder or a message never changes its entry id, so the old entry id is the same as the new one (EntryID parameter)

 

 

OnMessageMoved3    

OnFolderMoved(EntryID)

Fires when a folder is moved in the store.

EntryID - string, entry id (in hex) of the folder.

 

 

OnFolderMovedEx(EntryID, OldParentEntryID, NewParentEntryID)

Fires when a folder is moved in the store.

EntryID - string, entry id (in hex) of the folder.

OldParentEntryID - string, entry id (in hex) of the old parent folder.

NewParentEntryID - string, entry id (in hex) of the new parent folder.

 

 

OnFolderMoved3(EntryID, OldParentEntryID, NewParentEntryID, OldEntryID)

Fires when a message is moved in the store.

EntryID - string, entry id (in hex) of the folder.

OldParentEntryID - string, entry id (in hex) of the old parent folder.

NewParentEntryID - string, entry id (in hex) of the new parent folder.

OldEntryID - string, old entry id (hex) of the folder. Note that PST provider always passes an empty old entry id, but moving a folder never changes its entry id, so the old entry id is the same as the new one (EntryID parameter)

 

 

OnSearchComplete(EntryID)

Fires when an asynchronous search in a search folder is complete

EntryID - string, entry id (in hex) of the search folder.

 

 

 

 

RDOStore2 object

This object represents an extension of the RDOStore interface and introduces oadditional properties (see below).

This interface can be used for any store (RDOExchangeStore, RDOExchangeMailboxStore, RDOExchangePublicFoldersStore)


Derived from: RDOStore


implements all RDOStore properties and methods


Properties


Categories

 

returns RDOCategories collection representing categories from the given store

Only Outlook 2007 (or higher) stores categories list in the default store.

 

set Session = CreateObject("Redemption.RDOSession")
Session.logon
set Store = Session.GetSharedMailbox("dmitry")
set Categories =
Store.Categories
set Category =
Categories.Add("Redemption Category", olCategoryColorPeach)

 

DisplayOrder
integer,, read/write. Returns or sets the store's order in the Outlook's folder pane.
The first store has an index of 1 and the last store has an index of RDOSession.Stores.Count.

RDOPstStore store = session.Stores.AddPSTStore(@"c:\temp\important.pst", Missing.Value, "Most important store");

(store as RDOStore2).DisplayOrder = 2; //second store - the property is 1 based, not 0

 

Favorites
RDOFavorites, read-only.
Returns the list of folders marked as favorites in the current store.
 
GetFolderFromPath(FolderPath, CanCreate) Similar to the RDOSession.GetFolderFromPath method, but allows to open a folder by path on the per-store level. This method includes an optional parameter (CanCreate) that can be used to create the folders along the path if they do not already exist..
If the folder path includes the store name (prefixed with "\\"), it is ignored. This makes it possible to retrieve RDOFolder.FolderPath from a folder in one store and recreate the same path in another store.

FolderPath - string, full folder path in the form "\\Store name\Parent Folder Name\Folder". If store name is not specified, the default store is assumed.

CanCreare - variant, optional. If true, all folders on the path are created if necessary. Defaults to false if not specified.

RDOSession session = new RDOSession();

session.Logon("Test");

RDOStore store = session.Stores.DefaultStore;

RDOStore2 store2 = store as RDOStore2;

RDOFolder folder = store2.GetFolderFromPath(@"Inbox\Test folder", true);

MessageBox.Show(folder.Name);

Searches

RDOSearches, read-only.

 

Returns RDOSearchescollection that provides access to the Outlook Search Folders.

 

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Searches = Session.Stores.DefaultStore.Searches
for each Search in Searches
    Debug.Print "-------------"
    Debug.Print Search.Name
    Debug.Print Search.SearchCriteria.AsSQL
next

 


 

 

 

 

RDOPstStore object

This object represents PST (either ANSI or Unicode) message store. Implements all RDOStore properties and methods and exposes an additional property: PstPath. This object is returned by the various RDO methods if StoreKind property is either skPstAnsi or skPstUnicode.


Derived from: RDOStore


implements all RDOStore properties and methods


Properties


PstPath

String. Returns a fully qualified path to the given PST store

 

Important note: if you set RDOSession.MAPIOBJECT property to Namespace.MAPIOBJECT property from the Outlook Object Model and your code is running outside of the outlook.exe address space (i.e. it is not a COM add-in) this property will return an error due to a MAPI bug.

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
for each Store in Session.Stores
  if (Store.StoreKind = skPstAnsi) or (Store.StoreKind = skPstUnicode) Then
    Debug.Print Store.PstPath
next


Methods


 

GetNicknames

Returns RDONickNames collection representing nicknames stored in the store.

 

 

OverridePSTDisableGrow
Allows to temporarily disable PSTDisableGrow policy on the per-PST store basis.
Note that PSTDisableGrowAllowAuthenticodeOverrides registry value must be set prior to calling OverridePSTDisableGrow method since the parent registry key requires elevated rights even though is is a child of HKEY_CURRENT_USER.

set Session = CreateObject("Redemption.RDOSession")

Session.MAPIOBJECT = Application.Session.MAPIOBJECT

set pstStore = session.GetStoreFromID(Application.ActiveExplorer.CurrentFolder.Store.StoreID)

pstStore.OverridePSTDisableGrow()

ValidateIPMTree

Validates and creates (if necessary) the following default folders in the PST store

 

Inbox

Outbox

Deleted Items

Sent Items
Calendar

Contacts

Drafts

Journal

Notes

Tasks

Junk E-mail

Folder Views

Common Views

Search Root

IPM Subtree

 

set Session = CreateObject("Redemption.RDOSession")

'open or create a new PST store
Session.LogonPstStore("c:\temp\test_default_folders.pst", 1, "Test Default Folders Store")
set Store = Session.Stores.DefaultStore
Store.ValidateIPMTree

'now create a new contact in the default Contacts folder of the newly created PST store

set Contact = Store.GetDefaultFolder(olFolderContacts).Items.Add
Contact.Email1Address = "test_address@dimastr.com"
Contact.FirstName = "Dmitry"
Contact.LastName = "Streblechenko"
Contact.Save


 

 

RDOExchangeStore object

This object represents an Exchange message store. RDOExchangeMailboxStore and RDOExchangePublicFoldersStore are derived from this interface. Implements all RDOStore properties and methods and exposes an additional property: ServerDN.


Derived from: RDOStore


implements all RDOStore properties and methods


Properties


ServerDN

String. Returns an Exchange Server distinguished name

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
for each Store in Session.Stores
  if (skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) or (Store.StoreKind = skPublicFolders) Then
    Debug.Print Store.ServerDN
next


 

 

RDOExchangeMailboxStore object

This object represents an Exchange Server mailbox message store. Implements all RDOExchangeStore properties and methods and exposes an additional property: Owner. This object is returned by the various RDO methods if StoreKind property is either skPrimaryExchangeMailbox or skDelegateExchangeMailbox.


Derived from: RDOExchangeStore


implements all RDOExchangeStore properties and methods


Properties


AutoDiscoverUrl String, read-only. Returns the url pointing to the location of the  autodiscover XML for the store.
 

CalendarOptions

Returns RDOCalendarOptions object that represents the calendaring options (auto-accept, free/busy data, etc).

Read-only.

 

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
set CalendarOptions = Session.Stores.DefaultStore.CalendarOptions
CalendarOptions.AutoAccept = true

 

DaysToKeepOffline
Integer, read/write. Number of days to keep messages in the OST file. Cached mode only, Outlook 2013 or newer.
 
Delegates Returns RDOMailboxDelegates object) that allows to manage delegates for an Exchange store.
This functionality can be accessed in Outlook through File | Info | Account and Social Network Settings | Delegate Access).

'enumerate delegates
skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
'Delegates API uses EWS, so we need to provide credentials unless
'the currently logged user is the mailbox owner
Session.Credentials.Add "*.onmicrosoft.com""user@company.demo""MyPassword"
Session.Credentials.Add "*.outlook.com""user@company.demo""MyPassword"
set Store = Session.Stores.DefaultStore
if (Store.StoreKind <> skPrimaryExchangeMailbox) and (Store.StoreKind <> skDelegateExchangeMailbox) Then
    MsgBox "Delegates are only supported for the Exchange stores"
Else
    set Delegates = Store.Delegates
    for each Delegate in Delegates
        Debug.Print Delegate.User.Name
    next
End If
ExchangeManageStore Returns RDOExchangeManageStore object.
skPrimaryExchangeMailbox = 3
set Session = CreateObject(
"Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = Session.Stores.DefaultStore
if (Store.StoreKind = skPrimaryExchangeMailbox) Then
    set XMS = Store.ExchangeManageStore
    set Table = XMS.GetMailboxTable(
"") 'use the current store's server DN
    set Recordset = Table.ExecSQL("SELECT ""http://schemas.microsoft.com/mapi/proptag/0x3001001E"" AS PR_DISPLAY_NAME, " & _
                                                       " ""http://schemas.microsoft.com/mapi/proptag/0x3003001E"" AS PR_EMAIL_ADDRESS from Table"
)
    while not Recordset.EOF
        Debug.Print(Recordset.Fields(
"PR_DISPLAY_NAME").Value & " - " & Recordset.Fields("PR_EMAIL_ADDRESS").Value)
        Recordset.MoveNext
    wend
End If
IsArchive
Boolean, read-only.
Since both delegate and archive Exchange stores are represented by the RDOExchangeMailboxStore object and the StoreKind property returns  skDelegateExchangeMailbox for both kinds of mailboxes, IsArchive property allows to distinguish between delegate mailboxes that belong to another user and an archive mailbox owned by the current user.

'create new message, modify it without saving

set newMailItem = Application.CreateItem(0)

newMailItem.Recipients.Add("test@dimastr.com")

'access the newly created unsaved item using Redemption

set sItem = CreateObject("Redemption.SafeMailItem")

sItem.Item = newMailItem

'Redemption will not see the new recipient added above using OOM

MsgBox "# of recipients before Commit:" & vbCrLf & sItem.Recipients.Count

'after calling Commit, Redemption can see pending changes

'without saving the item

sItem.Commit

MsgBox "# of recipients after Commit:" & vbCrLf & sItem.Recipients.Count

 

IsCached

Boolean. read/write. Outlook 2003 and up only.

Returns true if the Exchange mailbox is cached. Note that delegate mailboxes are never cached.

Setting this property won't take effect until the next time MAPI logs to the profile.

Corresponds to the "Use Cached Exchange Mode" checkbox in the Exchange provider properties dialog.

 

 

IsConsumerAccount Boolean, read-only.
Returns true for a free outlook.com mailbox, and false otherwise
 

JunkEmailOptions

Returns RDOJunkEmailOptions object representing mailbox Junk E-mail options.

Note that mailbox Junk E-mail options can be different from the profile-wide options: mailbox Junk E-mail options can be retrieved or set for a mailbox other than the primary mailbox in the profile (see the example)

 

'make sure messages from a client are never marked as spam

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = Session.Stores.GetSharedMailbox("OtherUser")
set JunkOptions = Store.
JunkEmailOptions
JunkOptions.TrustedSenders.Add "@ReallyBigClient.com"
JunkOptions.Save

 

LastSyncTime
DateTime, read-only. The returns the time of the last sync. May not be present on all stores.
 
MAPIHTTPAddressbookExternalUrl
String, read-only. Returns the url pointing to the external address book endpoint for the MAPI-over-HTTP protocol.
 
MAPIHTTPAddressbookInternalUrl
String, read-only. Returns the url pointing to the internal address book endpoint for the MAPI-over-HTTP protocol.
 
MAPIHTTPMailboxExternalUrl
String, read-only. Returns the url pointing to the external store endpoint for the MAPI-over-HTTP protocol.
 
MAPIHTTPMailboxInternalUrl
String, read-only. Returns the url pointing to the internal store endpoint for the MAPI-over-HTTP protocol.
 
MaxSubmitMessageSize
Integer, read-only.
Returns the maximum allowed size of the outgoing messages (in kilobytes)

skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set NewMsg = Session.GetDefaultFolder(olFolderOutbox).Items.Add
NewMsg.Subject = "testing size"
NewMsg.To = "dmitry@dimastr.com"
NewMsg.Save
set Store = Session.Stores.DefaultStore
Cancel = false
if (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
    if Newmsg.Size >= 1024 * Store.
MaxSubmitMessageSize Then
        MsgBox "The outgoing message size exceeds the maximum allowed size for this mailbox"
        Cancel = true
    End If
End If
if Not Canxel then
    NewMsg.Send
End If

MessageSize Integer (64 bit), read-only. Returns the total size of all messages in the mailbox (bytes).

 
MonthsToKeepOffline
Integer, read/write. Number of months to keep messages in the OST file. Cached mode only, Outlook 2013 or newer.
If 0, all messages are cached.
 

OstPath

String, read only.

 

Returns full path to the local OST file used to cache the mailbox.

 

 

Owner

AddressEntry. Returns an Address Book object that represents the owner of the mailbox

 

set Session = CreateObject("Redemption.RDOSession")
Session.Logon
for each Store in Session.Stores
  if (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
    Debug.Print Store.
Owner.Name
next

 

OutOfOfficeAssistant

Returns an RDOOutOfOfficeAssistant object that allows to set the Out-Of-Office state and reply text.

 

skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = Session.Stores.DefaultStore
if (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
  set OOFAsistant = Store.
OutOfOfficeAssistant
  OOFAsistant.OutOfOffice = true
  OOFAsistant.OutOfOfficeText = "Sorry, I am out of office at the moment!"
Else
  MsgBox "Out Of Office Assistant is only available for the Exchange mailboxes"
End If

 

PrimaryStore

Returns an instance of the RDOExchangeMailboxStore object that represents the primary Exchange mailbox in the given Exchange account. E.g.. if an Exchange account has 4 stores (primary mailbox M1, delegate mailboxes D1 and D2, and a Public Folders store P1), PrimaryStore property for all these stores will return the primary mailbox M1.

The property was introduced to avoid the need to access RDOStore.StoreAccount property.  RDOAccount object returned by RDOStore.StoreAccount. wraps the IOlkAccount MAPI object, which has thread affinity and can raise an exception if accessed on a secondary thread. To avoid the cross-thread access exceptions, one can, for example, use RDOExchangeMailboxStore.PrimaryStore.Owner.SMTPAddress in place of RDOExchangeMailboxStore.StoreAccount.CurrentUser.SMTPAddress.

 

 
QuotaReceive Integer, read-only. Returns the mailbox size (in kilobytes) when no new messages will be received.
 
 
QuotaSend Integer, read-only. Returns the mailbox size (in kilobytes) when no new messages will be allowed to be sent.

 
QuotaWarning Integer, read-only. Returns the mailbox size (in kilobytes) when the mailbox owner receives a warning when a new message is received or sent.

 

Rules

RDORules, read-only. Returns a collection representing rules defined for the given mailbox.

 

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Rules = Session.Stores.DefaultStore.Rules 'will raise an error if not an Exchange store
for each Rule in Rules
  Debug.Print Rule.Name
next

 

ServerName

String, read only.

Returns the network name of the server that hosts the mailbox.

 

 
ServerVersion

String, read only.

Returns the version of the server that hosts the mailbox, e. g. "14.1.289.4001".

 

 
Templates
Returns RDOTemplates collection representing templates in the mailbox.
 

Methods


GetFolderFromSourceKey(SourceKey)

Returns a folder (RDOFolder) object corresponding to the given source key (PR_SOURCE_KEY).

SourceKey - the value of the PR_SOURCE_KEY. Either a variant array of bytes as returned by RDOFolder.Fields() or a string with a hex representation of  PR_SOURCE_KEY.

 

Normally folders can be reopened using RDOSession.GetFolderFromID or RDOStore.GetFolderFromID, but under Exchange the values of entry ids can differ depending on how the object is opened (e.g. whether it comes from the primary Exchange mailbox or a delegate mailbox, etc).

The value of  PR_SOURCE_KEY for a given folder or message is always the same. GetFolderFromSourceKey and GetMessageFromSourceKey allow to retrieve folders and messages when, for example, the folder or a message is retrieved by one user, stored in an external DB and then ubsequently retrieved in another user's context.

 

This method only works in the online mode: the profile used in RDOSession.Logon must either be configured to be in the online mode or RDOSession.LogonExchangeMailbox must be used.

 

PR_SOURCE_KEY = &H65E00102
skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4

skPublicFolders = 5
'retrieve the values of source keys for a message and its parent folder
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Msg = Session.GetMessageFromID(Application.ActiveExplorer.Selection.Item(1).EntryID)
MessageSourceKey = Msg.Fields(PR_SOURCE_KEY)
FolderSourceKey = Msg.Parent.Fields(PR_SOURCE_KEY)

'convert the source keys to hex strings suitable for storage
'in a database.
'GetMessageFromSourceKey and GetFolderFromSourceKey can take either a variant
'array of bytes as returned by Fields() for the PT_BINARY properties or a hex string, so it works either way
set Utils = CreateObject("Redemption.MAPIUtils")
strMessageSourceKey = Utils.HrArrayToString(MessageSourceKey)
strFolderSourceKey = Utils.HrArrayToString(FolderSourceKey)

'we can (now or later) use the values of the source keys to reopen a messsage or a folder
set Store = Session.Stores.DefaultStore
if (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) or (Store.StoreKind = skPublicFolders) Then
  set NewMsg = Store.GetMessageFromSourceKey(strFolderSourceKey, strMessageSourceKey)
  MsgBox "Message subject: " & NewMsg.Subject
  set NewFolder = Store.GetFolderFromSourceKey(strFolderSourceKey)
  MsgBox "Folder name: " & NewFolder.Name
End If
 

 

GetMessageFromSourceKey(FolderSourceKey, MessageSourceKey)

Returns a message (RDOMail, RDOContactItem, etc depending on the message class) object corresponding to the given source key (PR_SOURCE_KEY).

FolderSourceKey - the value of the parent folder's PR_SOURCE_KEY property. Either a variant array of bytes as returned by RDOFolder.Fields() or a string with a hex representation of  PR_SOURCE_KEY.

 

MessageSourceKey - the value of the message PR_SOURCE_KEY property. Either a variant array of bytes as returned by RDOFolder.Fields() or a string with a hex representation of  PR_SOURCE_KEY.

 

See GetFolderFromSourceKey above.

 

GetNicknames Returns RDONickNames collection representing nicknames stored in the store.

 

GetOutOfOfficeAssistantWithCredentials
(UserName, Password)
Similar to the OutOfOfficeAssistant property. returns an RDOOutOfOfficeAssistant object that allows to set the Out-Of-Office state and reply text, but also allows to specify the user name and password.

GetOwaNicknames
Returns RDONickNames collection representing nicknames used by OWA in Exchange 2010. Unlike the nicknames returned from GetNicknames,  this collection is read-only.

MakeEwsRequest(Data) Similar to the mailbox.MakeEwsRequestAsync method exposed for the Web (JS) addins by Outlook. Unlike the JavaScript equivalent, MakeEwsRequest in Redemption is synchronous and is expected to run on a secondary thread (see here for more on using Redemption in secondary threads). There are no limitation  which EWS call can be made.
Note that MakeEwsRequest is designed to work in COM (VSTO) addins or Outlook VBA as it intercepts EWS requests made by Outlook itself to extract the credentials. It will work outside of the outlook.exe process only if Outlook cached the credentials or if RDOSession.LogonHostedExchangeMailbox was used to connect to Exchange (which requires explicit credentials). Also note that it is expected that the parent RDOSession object is created well ahead of time (e.g. when the COM/VSTO addin is loaded) prior to calling MakeEwsRequest to allow Redemption sufficient time to collect the credentials after Outlook makes its own EWS calls.


Data - string. XML request payload

Returns XML string with the server reply

payload = _

"<?xml version=""1.0"" encoding=""utf-8""?>" & _

"<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""" & _

"               xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">" & _

"  <soap:Header><t:RequestServerVersion Version=""Exchange2007_SP1""/></soap:Header>" & _

"  <soap:Body>" & _

"    <GetDelegate xmlns=""http://schemas.microsoft.com/exchange/services/2006/messages""" & _

"                 xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types""" & _

"                 IncludePermissions=""true"">" & _

"      <Mailbox>" & _

"        <t:EmailAddress>" & smtpAddress & "</t:EmailAddress>" & _

"      </Mailbox>" & _

"    </GetDelegate>" & _

"  </soap:Body>" & _

"</soap:Envelope>"

 

set Session = CreateObject("Redemption.RDOSession")

Session.MAPIOBJECT = Application.Session.MAPIOBJECT

set defaultAccount = Session.Accounts.GetOrder(1).Item(1)

if TypeName(defaultAccount) = "RDOExchangeAccount" Then

  MsgBox "This message box simulates a delay between creating RDOSession object " & _

         "and a call to MakeEwsRequest to allow it to intercept EWS calls made by Outlook"

  Session.CacheAutoDiscoverXml smtpAddress, Application.Session.AutoDiscoverXml 'speed things up

  reply = defaultAccount.MakeEwsRequest(payload)

  MsgBox reply

End If


 

 

 

 

RDOExchangePublicFoldersStore object

This object represents an Exchange Server mailbox message store. Implements all RDOExchangeStore properties and methods. There are no additional properties at this time. This object is returned by the various RDO methods if StoreKind property is skPublicFolders.


Derived from: RDOExchangeStore


implements all RDOExchangeStore properties and methods


Properties


ExchangeManageStore Returns RDOExchangeManageStore object.
skPrimaryExchangeMailbox = 3
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Store = Session.Stores.DefaultStore
if (Store.StoreKind = skPrimaryExchangeMailbox) Then
    set XMS = Store.ExchangeManageStore
    set Table = XMS.GetMailboxTable(
"") 'use the current store's server DN
    set Recordset = Table.ExecSQL("SELECT ""http://schemas.microsoft.com/mapi/proptag/0x3001001E"" AS PR_DISPLAY_NAME, " & _
                                                       " ""http://schemas.microsoft.com/mapi/proptag/0x3003001E"" AS PR_EMAIL_ADDRESS from Table"
)
    while not Recordset.EOF
        Debug.Print(Recordset.Fields(
"PR_DISPLAY_NAME").Value & " - " & Recordset.Fields("PR_EMAIL_ADDRESS").Value)
        Recordset.MoveNext
    wend
End If

     

IsCached

Boolean. read/write. Outlook 2003 and up only.

Returns true if the Exchange mailbox is cached. Note that delegate mailboxes are never cached.

Setting this property won't take effect until the next time MAPI logs to the profile.

Corresponds to the "Download Public Folder Favorites" checkbox in the Exchange provider properties dialog.

 

 

PrimaryStore

Returns an instance of the RDOExchangeMailboxStore object that represents the primary Exchange mailbox in the given Exchange account. E.g.. if an Exchange account has 4 stores (primary mailbox M1, delegate mailboxes D1 and D2, and a Public Folders store P1), PrimaryStore property for all these stores will return the primary mailbox M1.

The property was introduced to avoid the need to access RDOStore.StoreAccount property.  RDOAccount object returned by RDOStore.StoreAccount. wraps the IOlkAccount MAPI object, which has thread affinity and can raise an exception if accessed on a secondary thread. To avoid the cross-thread access exceptions, one can, for example, use RDOExchangeMailboxStore.PrimaryStore.Owner.SMTPAddress in place of RDOExchangeMailboxStore.StoreAccount.CurrentUser.SMTPAddress.

 

 

Methods


GetFolderFromSourceKey(SourceKey)

 

See RDOExchangeMailboxStore.GetFolderFromSourceKey above

 

 

GetMessageFromSourceKey(FolderSourceKey, MessageSourceKey)

 

See RDOExchangeMailboxStore.GetMessageFromSourceKey above

 

 
     

 

 

 

 

 

RDOEASStore object

This object represents an Exchange Active Sync (EAS) store.


Derived from: RDOStore2


implements all RDOStore2 properties and methods


Properties


OstPath

String, read only.

 

Returns full path to the local OST file used to cache the mailbox.

 

 
Owner RDOAddressEntry, read-only. Return the address entry object representing the store owner.