Re: RDO objects and C#



Where does the item come from and why are you querying it for
RDOContactItem? Does it come from the Contacts folder? Most likely you
encounter a Distribution list, which is represented by the RDODistListItem
object.

As for what you are actually trying to do, the standard way to do things
like that is to

1. Run your code under the Windows user identity who can access all of the
required mailboxes
2. Call RDOSession.Logon if you have an existing profilee pointing to that
user's mailbox or call RDOSession.LogonExchangeMailbox
3. Loop through the entries in the RDOSession.AddressBook.GAL;
4. For each RDOAddressEntry with DisplayType property equal to DT_MAILUSER
(= 0)
5. Call RDOSession.GetSharedMailbox passing that RDOAddressEntry object (get
back RDOExchangeMailboxStore)
6. Loop through all subfolder and messages in tha tmailbox store stating
with the RDOStore.IPMRootFolder collection

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"AK" <AK@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:CA5A9D1D-2B32-499A-8367-B53F9040DB6E@xxxxxxxxxxxxxxxx
Hi,

I'm also getting the same kind of exception as below.

"Unable to cast COM object of type 'System.__ComObject' to interface type
'Redemption.RDOContactItem'. This operation failed because the
QueryInterface
call on the COM component for the interface with IID
'{DA18E730-205D-4CED-9E61-4DBBC35D2EE5}' failed due to the following
error:
No such interface supported (Exception from HRESULT: 0x80004002
(E_NOINTERFACE))."

I'm very new to the Redemption and it's object model.

What I'm trying to do is as follows.

"To retrieve all mailbox accounts from the domain (example xyz.com), once
retrieved a configurable number of worker threads will be spawned. Each
worker thread will take a single mailbox account and query Active
Directory
to see which Exchange Server the mailbox account resides on. The worker
thread will then trawl through each message in its given mailbox's
account
checking its Read, Received Date and the Mileage properties. If the mail
message meets the given criteria (mail item has been read, is older than x
months etc) the email item will be logged and if in the correct mode
deleted.
Once a mailbox has been fully processes it will go on for next mailbox".

I've few queries as below.

1. How to retrieve all mailbox accounts from the domain (e.g. xyz.com)?
2. Can you please let me know what objects in Redemption object model will
be helpful for this?
3. Do I have to use ProfMan library?

Please help me. As mentioned I'm very new to Redemption or for that matter
exchange or outlook programming.

Many Thanks in advance.
Amit Kathane



"Dmitry Streblechenko" wrote:

This is fairly standard and is not limited to Redemption at all.
Most COM objects do not support QueryInterface on the corresponding
CLASS_xyz GUID (since it is really an id and does not correspond to an
interface).
On the .Net level, avoid declaring and casting COM objects to the
XYZClass
(e.g. RDOContactItemClass).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

<dskwarek@xxxxxxxxx> wrote in message
news:1191919149.593110.157810@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Thank you for response.

I've posted wrong example.
The cast which doesn't work is RDOContactItemClass contact = item as
RDOContactItemClass;
This line returns null, but RDOContactItem contact = item as
RDOContactItem works and your example also.

What is amazing that method Items.Add("IPM.Contacts") return instance
of RDOMailClass which
doesn't implement RDOContactItem.

I think when tlbimp.exe generates interop assembly
than overrides cast operators.
Maybe this is workaround for C++ multi-inheritance which is not
present in C#?






.


Loading