home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Borland Delphi Runtime Library }
- { Simple MAPI Interface Unit }
- { }
- { Copyright (C) 1996,99 Inprise Corporation }
- { }
- {*******************************************************}
-
- unit Mapi;
-
- {NOTE: Do not place the $NOPACKAGEUNIT directive in this file}
-
- interface
-
- uses Windows;
-
- {
- Messaging Applications Programming Interface.
-
- Purpose:
-
- This file defines the structures and constants used by that
- subset of the Messaging Applications Programming Interface
- which is supported under Windows by Microsoft Mail for PC
- Networks version 3.x.
- }
-
- (*$HPPEMIT '#include <mapi.h>'*)
-
- type
- {$EXTERNALSYM FLAGS}
- FLAGS = Cardinal;
- {$EXTERNALSYM LHANDLE}
- LHANDLE = Cardinal;
- PLHANDLE = ^Cardinal;
-
- const
- {$EXTERNALSYM lhSessionNull}
- lhSessionNull = (0);
-
- type
- PMapiFileDesc = ^TMapiFileDesc;
- {$EXTERNALSYM MapiFileDesc}
- MapiFileDesc = packed record
- ulReserved: Cardinal; { Reserved for future use (must be 0) }
- flFlags: Cardinal; { Flags }
- nPosition: Cardinal; { character in text to be replaced by attachment }
- lpszPathName: LPSTR; { Full path name of attachment file }
- lpszFileName: LPSTR; { Original file name (optional) }
- lpFileType: Pointer; { Attachment file type (can be lpMapiFileTagExt) }
- end;
- TMapiFileDesc = MapiFileDesc;
-
- const
- {$EXTERNALSYM MAPI_OLE}
- MAPI_OLE = $00000001;
- {$EXTERNALSYM MAPI_OLE_STATIC}
- MAPI_OLE_STATIC = $00000002;
-
-
- type
- PMapiFileTagExt = ^TMapiFileTagExt;
- {$EXTERNALSYM MapiFileTagExt}
- MapiFileTagExt = packed record
- ulReserved: Cardinal; { Reserved, must be zero. }
- cbTag: Cardinal; { Size (in bytes) of }
- lpTag: PByte; { X.400 OID for this attachment type }
- cbEncoding: Cardinal; { Size (in bytes) of }
- lpEncoding: PByte; { X.400 OID for this attachment's encoding }
- end;
- TMapiFileTagExt = MapiFileTagExt;
-
-
- PMapiRecipDesc = ^TMapiRecipDesc;
- {$EXTERNALSYM MapiRecipDesc}
- MapiRecipDesc = packed record
- ulReserved: Cardinal; { Reserved for future use }
- ulRecipClass: Cardinal; { Recipient class }
- { MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG }
- lpszName: LPSTR; { Recipient name }
- lpszAddress: LPSTR; { Recipient address (optional) }
- ulEIDSize: Cardinal; { Count in bytes of size of pEntryID }
- lpEntryID: Pointer; { System-specific recipient reference }
- end;
- TMapiRecipDesc = MapiRecipDesc;
-
- const
- {$EXTERNALSYM MAPI_ORIG}
- MAPI_ORIG = 0; { Recipient is message originator }
- {$EXTERNALSYM MAPI_TO}
- MAPI_TO = 1; { Recipient is a primary recipient }
- {$EXTERNALSYM MAPI_CC}
- MAPI_CC = 2; { Recipient is a copy recipient }
- {$EXTERNALSYM MAPI_BCC}
- MAPI_BCC = 3; { Recipient is blind copy recipient }
-
- type
- PMapiMessage = ^TMapiMessage;
- {$EXTERNALSYM MapiMessage}
- MapiMessage = packed record
- ulReserved: Cardinal; { Reserved for future use (M.B. 0) }
- lpszSubject: LPSTR; { Message Subject }
- lpszNoteText: LPSTR; { Message Text }
- lpszMessageType: LPSTR; { Message Class }
- lpszDateReceived: LPSTR; { in YYYY/MM/DD HH:MM format }
- lpszConversationID: LPSTR; { conversation thread ID }
- flFlags: FLAGS; { unread,return receipt }
- lpOriginator: PMapiRecipDesc; { Originator descriptor }
- nRecipCount: Cardinal; { Number of recipients }
- lpRecips: PMapiRecipDesc; { Recipient descriptors }
- nFileCount: Cardinal; { # of file attachments }
- lpFiles: PMapiFileDesc; { Attachment descriptors }
- end;
- TMapiMessage = MapiMessage;
-
- const
- {$EXTERNALSYM MAPI_UNREAD}
- MAPI_UNREAD = $00000001;
- {$EXTERNALSYM MAPI_RECEIPT_REQUESTED}
- MAPI_RECEIPT_REQUESTED = $00000002;
- {$EXTERNALSYM MAPI_SENT}
- MAPI_SENT = $00000004;
-
-
- { Entry points. }
-
- { flFlags values for Simple MAPI entry points. All documented flags are
- shown for each call. Duplicates are commented out but remain present
- for every call. }
-
- { MAPILogon() flags. }
-
- {$EXTERNALSYM MAPI_LOGON_UI}
- MAPI_LOGON_UI = $00000001; { Display logon UI }
- {$EXTERNALSYM MAPI_PASSWORD_UI}
- MAPI_PASSWORD_UI = $00020000; { prompt for password only }
- {$EXTERNALSYM MAPI_NEW_SESSION}
- MAPI_NEW_SESSION = $00000002; { Don't use shared session }
- {$EXTERNALSYM MAPI_FORCE_DOWNLOAD}
- MAPI_FORCE_DOWNLOAD = $00001000; { Get new mail before return }
- {$EXTERNALSYM MAPI_ALLOW_OTHERS}
- MAPI_ALLOW_OTHERS = $00000008; { Make this a shared session (removed from 4.0 SDK) }
- {$EXTERNALSYM MAPI_EXPLICIT_PROFILE}
- MAPI_EXPLICIT_PROFILE = $00000010; { Don't use default profile (removed from 4.0 SDK) }
- {$EXTERNALSYM MAPI_EXTENDED}
- MAPI_EXTENDED = $00000020; { Extended MAPI Logon }
- {$EXTERNALSYM MAPI_USE_DEFAULT}
- MAPI_USE_DEFAULT = $00000040; { Use default profile in logon (removed from 4.0 SDK) }
-
- {$EXTERNALSYM MAPI_SIMPLE_DEFAULT}
- MAPI_SIMPLE_DEFAULT = MAPI_LOGON_UI or MAPI_FORCE_DOWNLOAD or MAPI_ALLOW_OTHERS; { removed from 4.0 SDK }
- {$EXTERNALSYM MAPI_SIMPLE_EXPLICIT}
- MAPI_SIMPLE_EXPLICIT = MAPI_NEW_SESSION or MAPI_FORCE_DOWNLOAD or MAPI_EXPLICIT_PROFILE; { removed from 4.0 SDK }
-
- { MAPILogoff() flags. }
-
- {$EXTERNALSYM MAPI_LOGOFF_SHARED}
- MAPI_LOGOFF_SHARED = $00000001; { Close all shared sessions (removed from 4.0 SDK) }
- {$EXTERNALSYM MAPI_LOGOFF_UI}
- MAPI_LOGOFF_UI = $00000002; { It's OK to present UI (removed from 4.0 SDK) }
-
- { MAPISendMail() flags. }
-
- { #define MAPI_LOGON_UI 0x00000001 Display logon UI }
- { #define MAPI_NEW_SESSION 0x00000002 Don't use shared session }
- {$EXTERNALSYM MAPI_DIALOG}
- MAPI_DIALOG = $00000008; { Display a send note UI }
- { # define MAPI_USE_DEFAULT 0x00000040 Use default profile in logon }
-
- { MAPIFindNext() flags. }
-
- {$EXTERNALSYM MAPI_UNREAD_ONLY}
- MAPI_UNREAD_ONLY = $00000020; { Only unread messages }
- {$EXTERNALSYM MAPI_GUARANTEE_FIFO}
- MAPI_GUARANTEE_FIFO = $00000100; { use date order }
- {$EXTERNALSYM MAPI_LONG_MSGID}
- MAPI_LONG_MSGID = $00004000; { allow 512 char returned ID }
-
- { MAPIReadMail() flags. }
-
- {$EXTERNALSYM MAPI_PEEK}
- MAPI_PEEK = $00000080; { Do not mark as read. }
- {$EXTERNALSYM MAPI_SUPPRESS_ATTACH}
- MAPI_SUPPRESS_ATTACH = $00000800; { header + body, no files }
- {$EXTERNALSYM MAPI_ENVELOPE_ONLY}
- MAPI_ENVELOPE_ONLY = $00000040; { Only header information }
- {$EXTERNALSYM MAPI_BODY_AS_FILE}
- MAPI_BODY_AS_FILE = $00000200;
-
- { MAPISaveMail() flags. }
-
- { #define MAPI_LOGON_UI 0x00000001 Display logon UI }
- { #define MAPI_NEW_SESSION 0x00000002 Don't use shared session }
- { #define MAPI_LONG_MSGID 0x00004000 /* allow 512 char returned ID }
-
- { MAPIAddress() flags. }
-
- { #define MAPI_LOGON_UI 0x00000001 Display logon UI }
- { #define MAPI_NEW_SESSION 0x00000002 Don't use shared session }
-
- { MAPIDetails() flags. }
-
- { #define MAPI_LOGON_UI 0x00000001 Display logon UI }
- { #define MAPI_NEW_SESSION 0x00000002 Don't use shared session }
- {$EXTERNALSYM MAPI_AB_NOMODIFY}
- MAPI_AB_NOMODIFY = $00000400; { Don't allow mods of AB entries }
-
- { MAPIResolveName() flags. }
-
- { #define MAPI_LOGON_UI 0x00000001 Display logon UI }
- { #define MAPI_NEW_SESSION 0x00000002 Don't use shared session }
- { #define MAPI_DIALOG 0x00000008 Prompt for choices if ambiguous }
- { #define MAPI_AB_NOMODIFY 0x00000400 Don't allow mods of AB entries }
-
- type
- PFNMapiLogon = ^TFNMapiLogOn;
- TFNMapiLogOn = function(ulUIParam: Cardinal; lpszProfileName: LPSTR;
- lpszPassword: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- lplhSession: PLHANDLE): Cardinal stdcall;
-
- PFNMapiLogOff = ^TFNMapiLogOff;
- TFNMapiLogOff = function(lhSession: LHANDLE; ulUIParam: Cardinal; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal stdcall;
-
- PFNMapiSendMail = ^TFNMapiSendMail;
- TFNMapiSendMail = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpMessage: TMapiMessage; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal stdcall;
-
- PFNMapiSendDocuments = ^TFNMapiSendDocuments;
- TFNMapiSendDocuments = function(ulUIParam: Cardinal; lpszDelimChar: LPSTR;
- lpszFilePaths: LPSTR; lpszFileNames: LPSTR;
- ulReserved: Cardinal): Cardinal stdcall;
-
- PFNMapiFindNext = ^TFNMapiFindNext;
- TFNMapiFindNext = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageType: LPSTR; lpszSeedMessageID: LPSTR; flFlags: FLAGS;
- ulReserved: Cardinal; lpszMessageID: LPSTR): Cardinal stdcall;
-
- PFNMapiReadMail = ^TFNMapiReadMail;
- TFNMapiReadMail = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageID: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- var lppMessage: PMapiMessage): Cardinal stdcall;
-
- PFNMapiSaveMail = ^TFNMapiSaveMail;
- TFNMapiSaveMail = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpMessage: TMapiMessage; flFlags: FLAGS; ulReserved: Cardinal;
- lpszMessageID: LPSTR): Cardinal stdcall;
-
- PFNMapiDeleteMail = ^TFNMapiDeleteMail;
- TFNMapiDeleteMail = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageID: LPSTR; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal stdcall;
-
- PFNMapiFreeBuffer = ^TFNMapiFreeBuffer;
- TFNMapiFreeBuffer = function(pv: Pointer): Cardinal stdcall;
-
- PFNMapiAddress = ^TFNMapiAddress;
- TFNMapiAddress = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszCaption: LPSTR; nEditFields: Cardinal; lpszLabels: LPSTR;
- nRecips: Cardinal; var lpRecips: TMapiRecipDesc; flFlags: FLAGS;
- ulReserved: Cardinal; lpnNewRecips: PULONG;
- var lppNewRecips: PMapiRecipDesc): Cardinal stdcall;
-
- PFNMapiDetails = ^TFNMapiDetails;
- TFNMapiDetails = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpRecip: TMapiRecipDesc; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal stdcall;
-
- PFNMapiResolveName = ^TFNMapiResolveName;
- TFNMapiResolveName = function(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszName: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- var lppRecip: PMapiRecipDesc): Cardinal stdcall;
-
- const
- {$EXTERNALSYM SUCCESS_SUCCESS}
- SUCCESS_SUCCESS = 0;
- {$EXTERNALSYM MAPI_USER_ABORT}
- MAPI_USER_ABORT = 1;
- {$EXTERNALSYM MAPI_E_USER_ABORT}
- MAPI_E_USER_ABORT = MAPI_USER_ABORT;
- {$EXTERNALSYM MAPI_E_FAILURE}
- MAPI_E_FAILURE = 2;
- {$EXTERNALSYM MAPI_E_LOGON_FAILURE}
- MAPI_E_LOGON_FAILURE = 3;
- {$EXTERNALSYM MAPI_E_LOGIN_FAILURE}
- MAPI_E_LOGIN_FAILURE = MAPI_E_LOGON_FAILURE;
- {$EXTERNALSYM MAPI_E_DISK_FULL}
- MAPI_E_DISK_FULL = 4;
- {$EXTERNALSYM MAPI_E_INSUFFICIENT_MEMORY}
- MAPI_E_INSUFFICIENT_MEMORY = 5;
- {$EXTERNALSYM MAPI_E_ACCESS_DENIED}
- MAPI_E_ACCESS_DENIED = 6;
- {$EXTERNALSYM MAPI_E_TOO_MANY_SESSIONS}
- MAPI_E_TOO_MANY_SESSIONS = 8;
- {$EXTERNALSYM MAPI_E_TOO_MANY_FILES}
- MAPI_E_TOO_MANY_FILES = 9;
- {$EXTERNALSYM MAPI_E_TOO_MANY_RECIPIENTS}
- MAPI_E_TOO_MANY_RECIPIENTS = 10;
- {$EXTERNALSYM MAPI_E_ATTACHMENT_NOT_FOUND}
- MAPI_E_ATTACHMENT_NOT_FOUND = 11;
- {$EXTERNALSYM MAPI_E_ATTACHMENT_OPEN_FAILURE}
- MAPI_E_ATTACHMENT_OPEN_FAILURE = 12;
- {$EXTERNALSYM MAPI_E_ATTACHMENT_WRITE_FAILURE}
- MAPI_E_ATTACHMENT_WRITE_FAILURE = 13;
- {$EXTERNALSYM MAPI_E_UNKNOWN_RECIPIENT}
- MAPI_E_UNKNOWN_RECIPIENT = 14;
- {$EXTERNALSYM MAPI_E_BAD_RECIPTYPE}
- MAPI_E_BAD_RECIPTYPE = 15;
- {$EXTERNALSYM MAPI_E_NO_MESSAGES}
- MAPI_E_NO_MESSAGES = 16;
- {$EXTERNALSYM MAPI_E_INVALID_MESSAGE}
- MAPI_E_INVALID_MESSAGE = 17;
- {$EXTERNALSYM MAPI_E_TEXT_TOO_LARGE}
- MAPI_E_TEXT_TOO_LARGE = 18;
- {$EXTERNALSYM MAPI_E_INVALID_SESSION}
- MAPI_E_INVALID_SESSION = 19;
- {$EXTERNALSYM MAPI_E_TYPE_NOT_SUPPORTED}
- MAPI_E_TYPE_NOT_SUPPORTED = 20;
- {$EXTERNALSYM MAPI_E_AMBIGUOUS_RECIPIENT}
- MAPI_E_AMBIGUOUS_RECIPIENT = 21;
- {$EXTERNALSYM MAPI_E_AMBIG_RECIP}
- MAPI_E_AMBIG_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT;
- {$EXTERNALSYM MAPI_E_MESSAGE_IN_USE}
- MAPI_E_MESSAGE_IN_USE = 22;
- {$EXTERNALSYM MAPI_E_NETWORK_FAILURE}
- MAPI_E_NETWORK_FAILURE = 23;
- {$EXTERNALSYM MAPI_E_INVALID_EDITFIELDS}
- MAPI_E_INVALID_EDITFIELDS = 24;
- {$EXTERNALSYM MAPI_E_INVALID_RECIPS}
- MAPI_E_INVALID_RECIPS = 25;
- {$EXTERNALSYM MAPI_E_NOT_SUPPORTED}
- MAPI_E_NOT_SUPPORTED = 26;
-
-
- { Delphi wrapper calls around Simple MAPI }
-
- function MapiLogOn(ulUIParam: Cardinal; lpszProfileName: LPSTR;
- lpszPassword: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- lplhSession: PLHANDLE): Cardinal;
-
- function MapiLogOff(lhSession: LHANDLE; ulUIParam: Cardinal; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal;
-
- function MapiSendMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpMessage: TMapiMessage; flFlags: FLAGS; ulReserved: Cardinal): Cardinal;
-
- function MapiSendDocuments(ulUIParam: Cardinal; lpszDelimChar: LPSTR;
- lpszFilePaths: LPSTR; lpszFileNames: LPSTR; ulReserved: Cardinal): Cardinal;
-
- function MapiFindNext(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageType: LPSTR; lpszSeedMessageID: LPSTR; flFlags: FLAGS;
- ulReserved: Cardinal; lpszMessageID: LPSTR): Cardinal;
-
- function MapiReadMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageID: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- var lppMessage: PMapiMessage): Cardinal;
-
- function MapiSaveMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpMessage: TMapiMessage; flFlags: FLAGS; ulReserved: Cardinal;
- lpszMessageID: LPSTR): Cardinal;
-
- function MapiDeleteMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageID: LPSTR; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal;
-
- function MapiFreeBuffer(pv: Pointer): Cardinal;
-
- function MapiAddress(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszCaption: LPSTR; nEditFields: Cardinal; lpszLabels: LPSTR;
- nRecips: Cardinal; var lpRecips: TMapiRecipDesc; flFlags: FLAGS;
- ulReserved: Cardinal; lpnNewRecips: PULONG;
- var lppNewRecips: PMapiRecipDesc): Cardinal;
-
- function MapiDetails(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpRecip: TMapiRecipDesc; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal;
-
- function MapiResolveName(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszName: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- var lppRecip: PMapiRecipDesc): Cardinal;
-
- var
- MAPIDLL: string = 'MAPI32.DLL';
-
- implementation
-
- var
- MAPIModule: HModule = 0;
- LogOn: TFNMapiLogOn = nil;
- LogOff: TFNMapiLogOff = nil;
- SendMail: TFNMapiSendMail = nil;
- SendDocuments: TFNMapiSendDocuments = nil;
- FindNext: TFNMapiFindNext = nil;
- ReadMail: TFNMapiReadMail = nil;
- SaveMail: TFNMapiSaveMail = nil;
- DeleteMail: TFNMapiDeleteMail = nil;
- FreeBuffer: TFNMapiFreeBuffer = nil;
- Address: TFNMapiAddress = nil;
- Details: TFNMapiDetails = nil;
- ResolveName: TFNMapiResolveName = nil;
-
- var
- MAPIChecked: Boolean = False;
-
- procedure InitMapi;
- var
- OSVersionInfo: TOSVersionInfo;
- hkWMS: HKEY;
- MAPIValueSize: Longint;
- MAPIValueBuf: array[0..8] of char;
- rType: Longint;
- begin
- if not MAPIChecked then
- begin
- MAPIChecked := True;
- MAPIModule := 0;
-
- OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
- GetVersionEx(OSVersionInfo);
- if (OSVersionInfo.dwMajorVersion > 3) or
- ((OSVersionInfo.dwMajorVersion = 3) and
- (OSVersionInfo.dwMinorVersion > 51)) then
- begin
- MAPIValueSize := sizeof(MAPIValueBuf);
- if RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows Messaging Subsystem',
- 0, KEY_READ, hkWMS) <> ERROR_SUCCESS then Exit;
- if RegQueryValueEx(hkWMS, 'MAPI', nil, @rType, @MAPIValueBuf,
- @MAPIValueSize) <> ERROR_SUCCESS then Exit;
- RegCloseKey(hkWMS);
- if not ((MAPIValueBuf[0] = '1') and (MAPIValueBuf[1] = #0)) then Exit;
- end
- else if GetProfileInt('Mail', 'MAPI', 0) = 0 then Exit;
-
- MAPIModule := LoadLibrary(PChar(MAPIDLL));
- end;
- end;
-
- function MapiLogOn(ulUIParam: Cardinal; lpszProfileName: LPSTR;
- lpszPassword: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- lplhSession: PLHANDLE): Cardinal;
- begin
- InitMapi;
- if @LogOn = nil then
- @LogOn := GetProcAddress(MAPIModule, 'MAPILogon');
- if @LogOn <> nil then
- Result := LogOn(ulUIParam, lpszProfileName, lpszPassword, flFlags,
- ulReserved, lplhSession)
- else Result := 1;
- end;
-
- function MapiLogOff(lhSession: LHANDLE; ulUIParam: Cardinal; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal;
- begin
- InitMapi;
- if @LogOff = nil then
- @LogOff := GetProcAddress(MAPIModule, 'MAPILogoff');
- if @LogOff <> nil then
- Result := LogOff(lhSession, ulUIParam, flFlags, ulReserved)
- else Result := 1;
- end;
-
- function MapiSendMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpMessage: TMapiMessage; flFlags: FLAGS; ulReserved: Cardinal): Cardinal;
- begin
- InitMapi;
- if @SendMail = nil then
- @SendMail := GetProcAddress(MAPIModule, 'MAPISendMail');
- if @SendMail <> nil then
- Result := SendMail(lhSession, ulUIParam, lpMessage, flFlags, ulReserved)
- else Result := 1;
- end;
-
- function MapiSendDocuments(ulUIParam: Cardinal; lpszDelimChar: LPSTR;
- lpszFilePaths: LPSTR; lpszFileNames: LPSTR;
- ulReserved: Cardinal): Cardinal;
- begin
- InitMapi;
- if @SendDocuments = nil then
- @SendDocuments := GetProcAddress(MAPIModule, 'MAPISendDocuments');
- if @SendDocuments <> nil then
- Result := SendDocuments(ulUIParam, lpszDelimChar, lpszFilePaths,
- lpszFileNames, ulReserved)
- else Result := 1;
- end;
-
- function MapiFindNext(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageType: LPSTR; lpszSeedMessageID: LPSTR; flFlags: FLAGS;
- ulReserved: Cardinal; lpszMessageID: LPSTR): Cardinal;
- begin
- InitMapi;
- if @FindNext = nil then
- @FindNext := GetProcAddress(MAPIModule, 'MAPIFindNext');
- if @FindNext <> nil then
- Result := FindNext(lhSession, ulUIParam, lpszMessageType,
- lpszSeedMessageID, flFlags, ulReserved, lpszMessageID)
- else Result := 1;
- end;
-
- function MapiReadMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageID: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- var lppMessage: PMapiMessage): Cardinal;
- begin
- InitMapi;
- if @ReadMail = nil then
- @ReadMail := GetProcAddress(MAPIModule, 'MAPIReadMail');
- if @ReadMail <> nil then
- Result := ReadMail(lhSession, ulUIParam, lpszMessageID, flFlags,
- ulReserved, lppMessage)
- else Result := 1;
- end;
-
- function MapiSaveMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpMessage: TMapiMessage; flFlags: FLAGS; ulReserved: Cardinal;
- lpszMessageID: LPSTR): Cardinal;
- begin
- InitMapi;
- if @SaveMail = nil then
- @SaveMail := GetProcAddress(MAPIModule, 'MAPISaveMail');
- if @SaveMail <> nil then
- Result := SaveMail(lhSession, ulUIParam, lpMessage, flFlags, ulReserved,
- lpszMessageID)
- else Result := 1;
- end;
-
- function MapiDeleteMail(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszMessageID: LPSTR; flFlags: FLAGS;
- ulReserved: Cardinal): Cardinal;
- begin
- InitMapi;
- if @DeleteMail = nil then
- @DeleteMail := GetProcAddress(MAPIModule, 'MAPIDeleteMail');
- if @DeleteMail <> nil then
- Result := DeleteMail(lhSession, ulUIParam, lpszMessageID, flFlags,
- ulReserved)
- else Result := 1;
- end;
-
- function MapiFreeBuffer(pv: Pointer): Cardinal;
- begin
- InitMapi;
- if @FreeBuffer = nil then
- @FreeBuffer := GetProcAddress(MAPIModule, 'MAPIFreeBuffer');
- if @FreeBuffer <> nil then
- Result := FreeBuffer(pv)
- else Result := 1;
- end;
-
- function MapiAddress(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszCaption: LPSTR; nEditFields: Cardinal; lpszLabels: LPSTR;
- nRecips: Cardinal; var lpRecips: TMapiRecipDesc; flFlags: FLAGS;
- ulReserved: Cardinal; lpnNewRecips: PULONG;
- var lppNewRecips: PMapiRecipDesc): Cardinal;
- begin
- InitMapi;
- if @Address = nil then
- @Address := GetProcAddress(MAPIModule, 'MAPIAddress');
- if @Address <> nil then
- Result := Address(lhSession, ulUIParam, lpszCaption, nEditFields,
- lpszLabels, nRecips, lpRecips, flFlags, ulReserved, lpnNewRecips,
- lppNewRecips)
- else Result := 1;
- end;
-
- function MapiDetails(lhSession: LHANDLE; ulUIParam: Cardinal;
- var lpRecip: TMapiRecipDesc; flFlags: FLAGS; ulReserved: Cardinal): Cardinal;
- begin
- InitMapi;
- if @Details = nil then
- @Details := GetProcAddress(MAPIModule, 'MAPIDetails');
- if @Details <> nil then
- Result := Details(lhSession, ulUIParam, lpRecip, flFlags, ulReserved)
- else Result := 1;
- end;
-
- function MapiResolveName(lhSession: LHANDLE; ulUIParam: Cardinal;
- lpszName: LPSTR; flFlags: FLAGS; ulReserved: Cardinal;
- var lppRecip: PMapiRecipDesc): Cardinal;
- begin
- InitMapi;
- if @ResolveName = nil then
- @ResolveName := GetProcAddress(MAPIModule, 'MAPIResolveName');
- if @ResolveName <> nil then
- Result := ResolveName(lhSession, ulUIParam, lpszName, flFlags,
- ulReserved, lppRecip)
- else Result := 1;
- end;
-
- initialization
- finalization
- if MAPIModule <> 0 then FreeLibrary(MAPIModule);
- end.
-