473,411 Members | 1,968 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,411 software developers and data experts.

Outlook Integration

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
Jul 21 '05 #1
3 5692
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/de...classtopic.asp

http://msdn.microsoft.com/library/de...figuration.asp

http://msdn.microsoft.com/library/de...vr_cdo_top.asp
I hope this helps a little bit?

Cor
Jul 21 '05 #2
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/de...technology.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/de...lders_http.asp

http://msdn.microsoft.com/library/de...age_webdav.asp

http://msdn.microsoft.com/library/de...ize_webdav.asp

http://msdn.microsoft.com/library/de...tify_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" <an*******@discussions.microsoft.com> wrote in message
news:52**********************************@microsof t.com... 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 lot

Kurt

Jul 21 '05 #3
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" <an*******@discussions.microsoft.com> wrote in message
news:52**********************************@microsof t.com...
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 lot

Kurt

Jul 21 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Iain Miller | last post by:
Currently using & developing a new application in A97. This app has a lot of Name & Address information in it. A lot of that information will be duplicated in Outlook & I suddenly wondered if its...
0
by: Krishna | last post by:
I am trying to loop thru Inbox and select any one email and save it as a RTF file. Here is the code I am using Outlook.Explorer myOutlookExplorer =...
3
by: Kurt | last post by:
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...
14
by: Gerhard | last post by:
I'm posting this again, as no answer to the first post.... I would like to integrate Outlook into my vb.net web page, so that when I send an email (which I can successfully do now), it shows up...
2
by: Pieter | last post by:
Hi, I'm using a thight integration with Outlook 2003 (with an Exchange server) in my VB.NET (2005) application. Until now I'm using the Outlook Object Model, but it appears to be very slow, and...
6
by: KatMagic | last post by:
The following code wrks fine when running from my pc (localhost); but errors when I put the asp.net code up to the production web server. Theerror I get is...
3
by: Mike P | last post by:
Is it possible to incorporate Outlook in your web app so that you can view your Inbox from your web app? And if so, does anybody have any good links? *** Sent via Developersdex...
0
by: Ben Grimwade | last post by:
Hi, im developing an Application that integrates with Outlook by creating an appointment in there calender. The code in question is below Dim appt As Outlook.AppointmentItem obj =...
1
by: PromisedOyster | last post by:
We have a written a C# application that interfaces with Outlook using the API. Since Microsoft Office 2000 SP1, our users have had to put up with the very annoying warning popup about a program...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.