|
|
|
|
|
|
| Home | Development | Partners | Resellers | About |
![]() |
|
![]() |
(Extended MAPI in DELPHI - Service Providers) AKA MAPI Inferno This section of our DEVELOPMENT site is for MAPI Service Providers. That means that you have to cover the following requirements: Very good (expert) DELPHI knowledge (this does not includes knowledge for working with third party components and VCLs), good understanding of Low-Level Microsoft API (functions, structures, pointers, memory managements, etc..), very good Extended MAPI background, and not last - strong will to learn more and investigate further. After a few years of investigating and building MAPI clients applications, we shifted part of our development team to the "MAPI inferno" - the service providers. This area of MAPI cannot be done with any kind of third-party custom MAPI components we know - they all have proved inapplicable here. Each MAPI service provider is unique, and moreover - they work in opposite sides. As suggested by some of our readers, this part of MAPI is not well documented. The reason? It is in the background of many Microsoft commercial products (including Microsoft Exchange Server). You can find basic information in MSDN, but the essentials are hidden. If you are "strong-headed" enough, maybe after a few weeks of digging, you could find some scraps at Google. There are only very few publications - one from Microsoft, dating from 1996, and another good is "Inside MAPI" - Microsoft (again) Press book (1996) - out of print. In June 11, 1996 Microsoft shipped the first version of Exchange server (Exchange Server 4.0) and stopped any development of documentation and also stopped producing any examples. Only some revisions of published web pages (if they are not removed). There are three common types of MAPI service providers: - Address book providers - Message store providers - Transport providers We'd translated from the old C (not C++), these three fundamental MAPI service providers. They have only a basic functionality, but if you have enough enthusiasm - you can improve then further. You can see also Delphi & ADO & MAPI Together - our implementation of some Extended MAPI service providers, that mix ADO DB (Active Data Objects) and Extended MAPI. See a few screen shoots! |
| The first one, available for download MAPI service provider, is the compiled version of the Sample Address Book Provider Sample (DELPHI 6 edition). This sample supports a single read-only container with names read from a flat binary file containing display names and e-mail addresses. It supports one-off templates and all configuration options. It is about 49 000 lines (some of them shared with the Peer Transport Provider) without blanks (a monstrous job!) translated from C code, with original comments from the Microsoft developers. Moreover, the code includes DELPHI improvements (we haven't had the patience to leave part of the code as it used to be, also the side-by-side translation doesn't mean a working application.). In addition, the package includes a simple editor (not provided from Microsoft), which can edit this read-only AB provider. This was compiled with using DELPHI 6 and the improved by us version is tested with Exchange client (shipped with Windows NT 4.0), Outlook 97, Outlook 2000, Outlook 2002 (XP) and Outlook 2003 - (the original C code works fine only with the Exchange client). Details (according the original C code and Microsoft Readme.txt file): The sample address book provider is based on a read-only file of fixed-length records (.SAB File). Each record contains the display name and e-mail address of a messaging user. This file supplies the contents of a single, read-only address container, which contains only e-mail users. The sample address book supports one e-mail address type; it is hard-coded to MSPEER. Upported Features: Details. The sample address book implements its own details display table for messaging users. There are two sets of properties, divided into two pages. The first page has the standard properties: display name, e-mail address, and address type. The second page has an example of almost every control type implemented in MAPI display tables (the data is hard-coded, not drawn from the address book). There is a template identifier for messaging user details, which enables all details to be supported for users copied from the sample address book to the personal address book. Details are also supported for the top-level directory, including the ability to change the .SAB file from the details pane. The directory details view uses a notification to update the display when the .SAB file is changed. Custom recipients (one-offs). The sample address book implements a one-off table with a set of properties different from the native details; these properties combine to form the e-mail address. The template identifier enables messaging users to be added to the personal address book, or directly to a message, using a special dialog box; processing is routed through the sample address book, which has the ability to generate the e-mail address from the properties entered in the dialog box. Advanced search dialog box. The sample address book implements an advanced search dialog box, accessible by choosing the Advanced button on the MAPI addressing dialog box. In reality, the advanced search is only slightly different from the standard search, which uses an ANR restriction. Configuration interfaces. The sample address book supports both interactive and programmatic configuration. Unsupported: Distribution lists. Creating, deleting, and modifying entries from particular user. Multi-valued properties. Named properties. Download DEMO |
|
It is about 47 000 lines (some of them shared with the Address Book Provider), without blanks, translated from C code, with original comments from the Microsoft developers. Moreover, the code includes DELPHI improvements (the side-by-side translation doesn't mean a working application.). In addition, the package includes a simple “installer” (not provided from Microsoft). This was compiled with DELPHI 6 and improved by us version was tested with Exchange client (shipped with Windows NT 4.0), Outlook 97, Outlook 2000, Outlook 2002 (XP) and Outlook 2003 – (the original C code work fine only with the Exchange client). Details (according original Microsoft Readme.txt file) Peer-to-Peer The sample peer-to-peer transport transmits messages as files and uses network file paths as its e-mail addresses. Each user has an inbound message directory and an outbound message directory; the user e-mail address is the network path to the inbound directory. The transport creates an outbound message in each recipient's inbound directory (obtained from the recipient's address). Not Peer-to-Peer |
|
This project, for shame or pride, took us more than year and a half (with some brakes). It is based of old Microsoft Example for building a Message Store. Original comments are saved. The message store is based on the file system. Each folder is a directory and each message is a file. Additional files hold properties of folders and of the message store itself. The project named DSEMPMS32.dpr contains about 63 000 lines of code. It was very hard to make our Message Store working with all the Outlook versions, starting from Exchange for WinNT4 to the last one (Outlook 2003) with all possible service packs. Notice that for each Outlook version, Microsoft has separate Message Store Provider for PST - MSPST32.DLL Some of the things, that make possible for DSEMPMS32 to work with the other Outlook versions. |
| Love us? Hate us? Questions or comments?
If you have any questions, concerns, compliments, or suggestions about these articles - write us
Can we license the source code (Delphi 6/Delphi 2007) of these providers?
|
Copyright © 2007 - 2009 ExtendedMAPI.COM Privacy Statement |