Logic now mirrors current Delphi 3.02 implementation closely
MAPIAddress -
MAPIavailable -
MAPIDeleteMail -
MAPIFindNext - Declare calls to MAPI.
MAPIFreeBuffer -
MAPILogoff -
MAPILogon -
MAPIReadMail -
MAPIResolveName -
MAPISaveMail -
MAPISendMail -
DWORD
LHANDLE
lpLHANDLE
lpMapiFileDesc
lpMapiMessage
lpMapiRecipDesc
lppMapiRecipDesc
lpULONG
LPVOID
SString
TlppMapiMessage
TMapiFileDesc
TMapiMessage
TMapiRecipDesc
UINT
ULONG
MAPI_AB_NOMODIFY
MAPI_BCC
MAPI_BODY_AS_FILE
MAPI_CC
MAPI_DIALOG
MAPI_ENVELOPE_ONLY
MAPI_E_ACCESS_DENIED
MAPI_E_AMBIGUOUS_RECIPIENT
MAPI_E_ATTACHMENT_NOT_FOUND
MAPI_E_ATTACHMENT_OPEN_FAILURE
MAPI_E_ATTACHMENT_WRITE_FAILURE
MAPI_E_BAD_RECIPTYPE
MAPI_E_DISK_FULL
MAPI_E_FAILURE
MAPI_E_INSUFFICIENT_MEMORY
MAPI_E_INVALID_EDITFIELDS
MAPI_E_INVALID_MESSAGE
MAPI_E_INVALID_RECIPS
MAPI_E_INVALID_SESSION
MAPI_E_LOGIN_FAILURE
MAPI_E_MESSAGE_IN_USE
MAPI_E_NETWORK_FAILURE
MAPI_E_NOT_SUPPORTED
MAPI_E_NO_MESSAGES
MAPI_E_TEXT_TOO_LARGE
MAPI_E_TOO_MANY_FILES
MAPI_E_TOO_MANY_RECIPIENTS
MAPI_E_TOO_MANY_SESSIONS
MAPI_E_TYPE_NOT_SUPPORTED
MAPI_E_UNKNOWN_RECIPIENT
MAPI_FORCE_DOWNLOAD
MAPI_GUARANTEE_FIFO
MAPI_LOGON_UI
MAPI_NEW_SESSION
MAPI_OLE
MAPI_OLE_STATIC
MAPI_ORIG
MAPI_PEEK
MAPI_RECEIPT_REQUESTED
MAPI_SENT
MAPI_SUPPRESS_ATTACH
MAPI_TO
MAPI_UNREAD
MAPI_UNREAD_ONLY
MAPI_USER_ABORT
MsgIdSize
SUCCESS_SUCCESS
Function MAPIAddress(lhSession: LHANDLE;
ulUIParam: ULONG;
lpszCaption: PChar;
nEditFields: ULONG;
lpszLabels: PChar;
nRecips: ULONG;
var lpRecips: TMapiRecipDesc;
flFlags: ULONG;
ulReserved: ULONG;
lpnNewRecips: lpULONG;
var lppNewRecips: lpMapiRecipDesc): ULONG;
Function MAPIavailable: boolean;
Function MAPIDeleteMail(lhSession : LHANDLE;
ulUIParam : ULONG;
lpszMessageID : PChar;
flFlags : ULONG;
ulReserved : ULONG) : ULONG;
Function MAPIFindNext(lhSession : LHANDLE;
ulUIParam : ULONG;
lpszMessageType : PChar;
lpszSeedMessageID: PChar;
flFlags : ULONG;
ulReserved : ULONG;
lpszMessageID : PChar) : ULONG ;
Declare calls to MAPI.DLL declare the functions themselves
Function MAPIFreeBuffer(pv : LPVOID) : ULONG;
Function MAPILogoff(lhSession : LHANDLE;
ulUIParam : ULONG;
flFlags : ULONG;
ulReserved : ULONG) : ULONG ;
Function MAPILogon(ulUIParam : ULONG;
lpszName : PChar;
lpszPassword: PChar;
flFlags : ULONG;
ulReserved : ULONG;
lplhSession : LPLHANDLE) : ULONG;
Function MAPIReadMail(lhSession : LHANDLE;
ulUIParam : ULONG;
lpszMessageID : PChar;
flFlags : ULONG;
ulReserved : ULONG;
lpMessage : lpMapiMessage) : ULONG;
Function MAPIResolveName(lhSession : LHANDLE;
ulUIParam : ULONG;
lpszName : Pchar;
flFlags : ULONG;
ulReserved: ULONG;
lppRecips : lppMapiRecipDesc) : ULONG;
Function MAPISaveMail(lhSession : LHANDLE;
ulUIParam : ULONG;
lpMessage : lpMapiMessage;
flFlags : ULONG;
ulReserved : ULONG;
lpszMessageID : PChar) : ULONG;
Function MAPISendMail(lhSession : LHANDLE;
ulUIParam : ULONG;
lpMessage : lpMapiMessage;
flFlags : ULONG;
ulReserved : ULONG) : ULONG;
DWORD = Longint
LHANDLE = LongInt
lpLHANDLE = ^LHANDLE
lpMapiFileDesc = ^TMapiFileDesc
message id size, large enough for Unicode should
MAPI use it } {-----------------------------------} { MAPI File attachment information. } {-----------------------------------
lpMapiMessage = ^TMapiMessage
---------------------------} { MAPI message information. } {---------------------------
lpMapiRecipDesc = ^TMapiRecipDesc
-----------------------------} { MAPI recipient information. } {-----------------------------
lppMapiRecipDesc = ^lpMapiRecipDesc
lpULONG = ^LongInt
LPVOID = Pointer
SString = ShortString
.DEFINE DEBUG} {$IFNDEF DEBUG} {$D-} {$L-
TlppMapiMessage = ^lpMapiMessage
TMapiFileDesc = record
ulReserved : ULONG;
flFlags : ULONG;
nPosition : ULONG;
lpszPathName : PChar;
lpszFileName : PChar;
lpFileType : Pointer;
end;
TMapiMessage = record
ulReserved : ULONG;
lpszSubject : PChar;
lpszNoteText : PChar;
lpszMessageType : PChar;
lpszDateReceived : PChar;
lpszConversationID : PChar;
flFlags : ULONG;
lpOriginator : lpMapiRecipDesc;
nRecipCount : ULONG;
lpRecips : lpMapiRecipDesc;
nFileCount : ULONG;
lpFiles : lpMapiFileDesc;
end;
TMapiRecipDesc = record
ulReserved : ULONG;
ulRecipClass : ULONG;
lpszName : PChar;
lpszAddress : PChar;
ulEIDSize : ULONG;
lpEntryID : Pointer;
end;
UINT = Integer
------------------} { MAPI data types. } {------------------
ULONG = LongInt
MAPI_AB_NOMODIFY = $0400
Save body as first attachment
MAPI_BCC = 3
Recipient is copy recipient.
MAPI_BODY_AS_FILE = $0200
Guarantee FIFO MAPIFindNext
MAPI_CC = 2
Recipient is primary recipient.
MAPI_DIALOG = $0008
Don't get default if available.
MAPI_ENVELOPE_ONLY = $0040
Only unread messages
MAPI_E_ACCESS_DENIED = 6
MAPI_E_AMBIGUOUS_RECIPIENT = 21
MAPI_E_ATTACHMENT_NOT_FOUND = 11
MAPI_E_ATTACHMENT_OPEN_FAILURE = 12
MAPI_E_ATTACHMENT_WRITE_FAILURE = 13
MAPI_E_BAD_RECIPTYPE = 15
MAPI_E_DISK_FULL = 4
MAPI_E_FAILURE = 2
MAPI_E_INSUFFICIENT_MEMORY = 5
MAPI_E_INVALID_EDITFIELDS = 24
MAPI_E_INVALID_MESSAGE = 17
MAPI_E_INVALID_RECIPS = 25
MAPI_E_INVALID_SESSION = 19
MAPI_E_LOGIN_FAILURE = 3
MAPI_E_MESSAGE_IN_USE = 22
MAPI_E_NETWORK_FAILURE = 23
MAPI_E_NOT_SUPPORTED = 26
MAPI_E_NO_MESSAGES = 16
MAPI_E_TEXT_TOO_LARGE = 18
MAPI_E_TOO_MANY_FILES = 9
MAPI_E_TOO_MANY_RECIPIENTS = 10
MAPI_E_TOO_MANY_SESSIONS = 8
MAPI_E_TYPE_NOT_SUPPORTED = 20
MAPI_E_UNKNOWN_RECIPIENT = 14
MAPI_FORCE_DOWNLOAD = $1000
Header and body, no files
MAPI_GUARANTEE_FIFO = $0100
Don't mark message as read
MAPI_LOGON_UI = $0001
MAPI_NEW_SESSION = $0002
Display logon UI
MAPI_OLE = $0001
Force message download from server
MAPI_OLE_STATIC = $0002
Set if attachment is an OLE Object
MAPI_ORIG = 0
-----------------------------} { MAPI constants information. } {-----------------------------
MAPI_PEEK = $0080
Only header information
MAPI_RECEIPT_REQUESTED = $0002
MAPI_SENT = $0004
MAPI_SUPPRESS_ATTACH = $0800
Don't modify PAB entries
MAPI_TO = 1
Recipient is message originator.
MAPI_UNREAD = $0001
Recipient is blind-copy recipient.
MAPI_UNREAD_ONLY = $0020
Prompt to resolve ambig. names
MAPI_USER_ABORT = 1
MsgIdSize = 520
SUCCESS_SUCCESS = 0
Set if attachment is Static OLE } { MAPI Error codes.