Outlook Integration

G

Guest

Hi

We are developing an off-the-shelf software suite for a certain business sector. Most of the program is simply a GUI on top of some .mdb files. Its a .net application written in c#

One major requirement is "Outlook Integration". The Outlook contact folders are to be used for contact management

I want to know what is the standard way to do this these days. Most of the information in MSDN seems rather old

I first used the Outlook 11 Object Library, and it was great, it lets me access folders in a local .pst file, or on an exchange server. But it was too slow. My test contact folder with 3000 entries took over 3 minutes to load in

I tried to do a SetColumns on the MAPIFolders items to speed it up, but then the objects within the items could no longer be cast as ContactItem in C#

I read in the newsgroups that CDO can be used to speed things up, but I am unsure which version to use. I have 1.21 library, for exchange 2000 library, and for exchange management library

I also read elsewhere that cdo 1.21 is old and no longer supported in a .net environment, and the exchange 2000 and management libraries seem to have little to do with contact lists or address books

All 3 CDOs seem to be solely related to direct connections to the exchange server, but I can only assume the customer has outlook that may or may not be in workgroup mode. The contact folders could be in either .pst files or on an exchange server

As this is not an in-house project, I cant assume much. But I can specify certain versions of outlook (ideally outlook 98 or 2000 or better) as a requirement

What I want to do must be possible, as ActiveSync can access any type of outlook contact folder, and it much faster than using the Outlook Object Library

Anyone know how ActiveSync does it? Or how I should do it? Or is using Outlook as a contact management system not completely supported my microsoft in this way

Thanks a lo

Kurt
 
C

Cor

Hi Kurt,

There are 4 versions of CDO (in chronological order):

- CDO.DLL : CDO version 1.2.1
- CDONTS.DLL : CDO version 1.2.1 for Windows NT Server (not the same as CDO
version 1.2.1!)
- CDOSYS.DLL : CDO for Windows 2000
- CDOEX.DLL : CDO for Exchange 2000 Server

some links for you problem (just collected not used)

http://www.microeye.com/resources/res_outlookvsnet.htm

http://msdn.microsoft.com/library/d...html/frlrfsystemwebmailsmtpmailclasstopic.asp

http://msdn.microsoft.com/library/d.../cdosys/html/_cdosys_schema_configuration.asp

http://msdn.microsoft.com/library/d...y/en-us/exchanchor/htms/msexchsvr_cdo_top.asp


I hope this helps a little bit?

Cor
 
J

Jay B. Harlow [MVP - Outlook]

Kurt,
I first used the Outlook 11 Object Library, and it was great,
it lets me access folders in a local .pst file, or on an exchange server.
But it was too slow. My test contact folder with 3000 entries took over 3
minutes to load in.
How often are you going to load all 3000 entries? I would only expect the
initial import, then you only care about changed items...

In addition to Cor's links, I would add:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_techsel_bytechnology.asp

It identifies the majority of the technologies available to Exchange Server.


Here are a handful of samples that may (or may not) help:

http://msdn.microsoft.com/library/d.../e2k3/e2k3/_exch2k_searching_folders_http.asp

http://msdn.microsoft.com/library/d.../e2k3/e2k3/_esdk_sending_a_message_webdav.asp

http://msdn.microsoft.com/library/d...k3/e2k3/_esdk_getting_mailbox_size_webdav.asp

http://msdn.microsoft.com/library/d...3/e2k3/_esdk_samples_exchmailnotify_intro.asp
I also read elsewhere that cdo 1.21 is old and no longer supported
in a .net environment, and the exchange 2000 and management
libraries seem to have little to do with contact lists or address books.
The Exchange CDO libraries are only available if you have Exchange loaded.
CDO 1.21 is available with Exchange or as an optional install with Outlook.

Remember that newer versions of Outlook & CDO will cause a security prompt
when accessing contacts to prevent viruses. Property constructed COM-Addins
in Outlook 2003 will bypass the security prompt.

If PST (no Exchange Server) is an option, then you only real choices are
Outlook OOM, CDO 1.21, or Extended MAPI. The only published (supported) way
of working with Contacts themselves in the Outlook OOM, think of the Outlook
OOM as the "Business Model" for Outlook Contacts. CDO 1.21 & Extended MAPI
are largely the "Data Model" for Outlook Contacts...

http://www.cdolive.com has published some of the property tags to work with
Contacts from CDO 1.21 or Extended MAPI, however you are bypassing the
"Business Model" in favor of direct access to the "Data Model.

I would not recommend Extended MAPI from .NET, you may be able to use unsafe
code & Extended MAPI, however I have not tried. My initial tests (from
VB.NET) suggest that Extended MAPI is possible from .NET, however I suspect
the pain is not worth the gain in either C# or VB.NET.

I use CDO 1.21 from .NET via the VS.NET generated interop without any real
problems. However! its "easier" from VB.NET as VB.NET has implicit support
for late binding. For performance I would not recommend Late Binding. I cast
most of the CDO properties to their respective types, so I get early binding
in VB.NET, the same technique can be be applied to C#. Also remember to call
Marshal.ReleaseComObject for each COM object you use via interop (whether
PIA or other interop assembly). ReleaseComObject should be called in a
loop...

I also understand that CDO 1.21 is "not supported" in .NET, in that if you
use CDO 1.21 from .NET and have a problem, you are on your own to resolve
it. Not that it is explicitly not allowed.

Hope this helps
Jay

Kurt said:
Hi.

We are developing an off-the-shelf software suite for a certain business
sector. Most of the program is simply a GUI on top of some .mdb files. Its
a .net application written in c#.
One major requirement is "Outlook Integration". The Outlook contact
folders are to be used for contact management.
I want to know what is the standard way to do this these days. Most of
the information in MSDN seems rather old.
I first used the Outlook 11 Object Library, and it was great, it lets me
access folders in a local .pst file, or on an exchange server. But it was
too slow. My test contact folder with 3000 entries took over 3 minutes to
load in.
I tried to do a SetColumns on the MAPIFolders items to speed it up, but
then the objects within the items could no longer be cast as ContactItem in
C#.
I read in the newsgroups that CDO can be used to speed things up, but I am
unsure which version to use. I have 1.21 library, for exchange 2000
library, and for exchange management library.
I also read elsewhere that cdo 1.21 is old and no longer supported in a
..net environment, and the exchange 2000 and management libraries seem to
have little to do with contact lists or address books.
All 3 CDOs seem to be solely related to direct connections to the exchange
server, but I can only assume the customer has outlook that may or may not
be in workgroup mode. The contact folders could be in either .pst files or
on an exchange server.
As this is not an in-house project, I cant assume much. But I can specify
certain versions of outlook (ideally outlook 98 or 2000 or better) as a
requirement.
What I want to do must be possible, as ActiveSync can access any type of
outlook contact folder, and it much faster than using the Outlook Object
Library.
Anyone know how ActiveSync does it? Or how I should do it? Or is using
Outlook as a contact management system not completely supported my microsoft
in this way?
 
H

Henk Verhoeven

Hi Kurt

The post already mention a wealth of information.

I have done outlook integration using C#, Extended MAPI and Outlook model.

There is a managed extended mapi library you can use if you ultimately want
to do extended mapi (www.mapi33.freeservers.com), however I guess you need
to determine what the application will do and your
target users.

In my particular case, I had to support O2K and higher, thus was not able to
use the PIA's and also had to work around the security patches. Lots of
headaches, but this eventually will mean that the Outlook plug-in does not
require administrators to install the software. This however was my target
group. Yours might require administrators and thus it is easier to use the
CDO, Outlook or simple mapi instead.

I mixed the Outlook and Extended mapi, using them interchangeably, but not
without headaches I might add.
:)

There are other libraries available such as redemption library, but it will
be safer to do VB6 or Delphi COM based implementation. Redemption interop
apparently does not work to well with c#. I personally did not use that, but
It might be a better alternative if you are looking for a quicker
implementation. (Unless you have already some extensive knowledge of
Extended mapi, but is are a huge support group that is very helpful)

Henk

Kurt said:
Hi.

We are developing an off-the-shelf software suite for a certain business
sector. Most of the program is simply a GUI on top of some .mdb files. Its
a .net application written in c#.
One major requirement is "Outlook Integration". The Outlook contact
folders are to be used for contact management.
I want to know what is the standard way to do this these days. Most of
the information in MSDN seems rather old.
I first used the Outlook 11 Object Library, and it was great, it lets me
access folders in a local .pst file, or on an exchange server. But it was
too slow. My test contact folder with 3000 entries took over 3 minutes to
load in.
I tried to do a SetColumns on the MAPIFolders items to speed it up, but
then the objects within the items could no longer be cast as ContactItem in
C#.
I read in the newsgroups that CDO can be used to speed things up, but I am
unsure which version to use. I have 1.21 library, for exchange 2000
library, and for exchange management library.
I also read elsewhere that cdo 1.21 is old and no longer supported in a
..net environment, and the exchange 2000 and management libraries seem to
have little to do with contact lists or address books.
All 3 CDOs seem to be solely related to direct connections to the exchange
server, but I can only assume the customer has outlook that may or may not
be in workgroup mode. The contact folders could be in either .pst files or
on an exchange server.
As this is not an in-house project, I cant assume much. But I can specify
certain versions of outlook (ideally outlook 98 or 2000 or better) as a
requirement.
What I want to do must be possible, as ActiveSync can access any type of
outlook contact folder, and it much faster than using the Outlook Object
Library.
Anyone know how ActiveSync does it? Or how I should do it? Or is using
Outlook as a contact management system not completely supported my microsoft
in this way?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top