Are you a world traveler? ZoneTick is a cool utility that'll help you stay in touch over multiple time zones!
 
Introduction  
Nik Okuntseff  MS Exchange Server Programming 

Introduction

This book is intended as a reference and tutorial on Microsoft Exchange Server programming. I am putting this on-line hoping to get feedback from developers - to make this material better. This book is not about MAPI. I am trying to focus on the variety of Microsoft Exchange Server programming topics. Familiarity with MAPI would definitely benefit a reader. However, MS Exchange Server programming techniques go well beyond MAPI. I have started to put together material for this book because of the following reasons:
  • Due to the nature of my previous work I needed to design and implement a few custom gateways for Microsoft Exchange Server. Materials that were at that time available to me (which was mostly the Platform SDK) lacked desirable simplicity.
  • MAPI is nice but is rather complex. It may become even more unmanageable in context of MS Exchange Server development. Perhaps I could write several little samples or design a few helper C++ classes to make work of Exchange Server programming easier. Historical (and the only!) way of learning MAPI so far was by example. MAPI always seemed to be a little over weighted. There is no easy way learning MAPI to the best of my knowledge. You can't just read a book or two and assume that you really know how to use it. This becomes worse in context of MS Exchange Server. To the complexities already available in MAPI other issues add on. And there is a lot of them. One little example: Microsoft provides a rich SDK for Exchange server called the Exchange Development Kit (EDK). Thus, having around a book with practical sample code would be helpful.
  • There are a few books around about MS Exchange development. But nothing about gateways, or the Directory access functions (DAPI), as far as I know. In fact, the only serious reference available to me was the Platform SDK. I must say that it contains two very important books: namely Microsoft Exchange Server Programmer's Reference, and Gateway Programmer's Reference.
  • There is definite lack of tools. Perhaps I could develop a few tools as I go along, or at least test and suggest working techniques to use for tools development.
I welcome all comments, suggestions, corrections and questions from developers. Please feel free do drop me a line here: NikOkuntseff@WRConsulting.com. This work will be published in a form of a regular book some time in 1999.
 

Scope

The material covers Microsoft Exchange Server 5.5. Outlook 97 and Outlook 98 were used as clients throughout this book. When version is not referenced - assume Outlook 98. All code is currently compiled using Microsoft Visual C++ 5.0. I intend to convert all projects to Visual C++ 6.0 before releasing this book.
 

Contents by Chapters

  • Useful EDK Tools chapter describes Address Book Viewer, Message Store Viewer, and CFGCODE tools that you may find useful.
  • Exchange Development Kit chapter gives a brief introduction to Microsoft EDK.
  • Working with MS Exchange Directory covers DAPI (Directory API). It contains a lot of samples showing how you could use it in real life.
  • Working with Messages in Exchange Server Folders describes how you could locate, open, create, copy, and move folders, access messages and its attachments that are stored in folders. It also covers GAL (Exchange Global Address List), and illustrates how you could write client code that sends an e-mail message.
  • Using Collaboration Data Objects covers CDO in C++ development environment.
  • Forms Programming is a chapter about MAPI and HTML forms. Here I explain what forms are, how you can develop them, what are differences. Outlook form development environment is also covered together with Microsoft sample form applications. In HTML Forms subchapter I present a simple ISAPI DLL that can process an HTML form submit operation.
  • Folder Scripting is about writing workflow applications for Microsoft Exchange Server. It describes how you could setup the scripting environment, how you could write and debug scripts. This chapter also describes two major drawbacks of this technology (lack of speed and reliability).
  • Using Microsoft Message Queues is about MSMQ in context of MAPI and Microsoft Exchange Server development. It describes MSMQ Exchange Connector and MSMQ MAPI Transport Provider. These components are developed by Microsoft and you can use them with some minor programming involved. I have a few samples here that use MSMQ with and without an Exchange server.
  • MS Exchange Server Security describes programming aspects of Exchange server security. Logon security is discussed, as well as directory and public folder security. I present several examples that show how you could read and modify programmatically security attributes of objects. The difference between Windows NT ACLs and public folder ACLs is discussed and explained.
  • Writing Exchange Administrator Extensions chapter describes how you could extend Exchange Administrator program by providing your own property page dialogs integrated into it. A sample is presented.
  • Developing Gateways chapter is about customizing Microsoft sample gateway to suit your needs. Basically, it shows how you could utilize it with little programming involved. Exchange Server gateways development is difficult. Perhaps you could save yourself some time by reusing Microsoft code. Also, installation issues are covered. I show how you could write your own code to accomplish gateway installation tasks.
  • MAPI Class Library presents a C++ class that may be useful when dealing with MAPI properties.
  • Utilities for Exchange Server describes some of my gadgets that may be useful for an Exchange Server developer (CService, CServiceEx classes, and a program to start/stop Exchange Server services).
  • Appendixes describe building debug version of Exchange SDK library and usage of MFC in MAPI/Exchange development projects.

 
[ Contents | Home ]

Send comments and suggestions to niko@wrconsulting.com
Copyright © 1997-1998 by Nik Okuntseff