A mellékelt alkalmazás űrlapján megadhatjuk az elküldendő elektronikus levél adatait, vagyis a feladó nevét, e-mail címét, a címzett ezen adatait, a levél tárgyát és szövegét, valamint a mellékelendő állomány elérési útvonalát.
A LÉTREHOZ nyomógomb megnyomásakor felbukkan az alapértelmezett levelezőrendszer, új levél szerkesztését lehetővé tevő űrlapja a megadott adatokkal, mellyel már csak annyi a teendőnk, hogy a KÜLDÉS gombra kattintunk.
A nyomógombra kattintva meghívjuk a Send metódusunkat, mely megvalósítja a műveletet. Lássuk hogyan.
A művelet lényeg, hogy a TMapiMessage adatszerkezetben megadjuk az üzenethez kapcsolódó információkat, majd a MAPISendMail metódussal elküldjük azt.
A TMapiMessage rekord mezői tartalmazzák a levél adatait, így ezeket fel kell tölteni a metódus paramétereiben megadott értékekkel. Elsőként a levél tárgyát adjuk meg:
with m do begin
if (Subject <> '') then lpszSubject := PChar(Subject);
A következő lépés, hogy megadjuk az üzenet szövegét:
if (Body <> '') then lpszNoteText := PChar(Body);
A küldő és a címzett adatait egy-egy TMapiRecipDesc típusú rekord tartalmazza. Ezek mezőit is feltöltjük. Elsőként a küldő adatait adjuk meg.
if (SenderEmail <> '') then begin
lpSender.ulRecipClass := MAPI_ORIG;
if (SenderName = '') then
lpSender.lpszName := PChar(SenderEMail)
else
lpSender.lpszName := PChar(SenderName);
lpSender.lpszAddress := PChar(SenderEmail);
lpSender.ulReserved := 0;
lpSender.ulEIDSize := 0;
lpSender.lpEntryID := nil;
lpOriginator := @lpSender;
end;
Majd a címzett adatait:
if (RecipientEmail <> '') then begin
lpRecipient.ulRecipClass := MAPI_TO;
if (RecipientName = '') then
lpRecipient.lpszName := PChar(RecipientEMail)
else
lpRecipient.lpszName := PChar(RecipientName);
lpRecipient.lpszAddress := PChar(RecipientEmail);
lpRecipient.ulReserved := 0;
lpRecipient.ulEIDSize := 0;
lpRecipient.lpEntryID := nil;
nRecipCount := 1;
lpRecips := @lpRecipient;
end
A címzett adatait tartalmazó rekord mutatóját a TMapiMessage rekord egyik mezőjében helyezzük el. A mellékelt állomány adatait egy TMapiFileDesc típusú rekord hordozza majd, melynek címét feltöltés után szintén a TMapiMessage rekordban helyezzük el.
FillChar(FileAttach, SizeOf(FileAttach), 0);
FileAttach.nPosition := Cardinal($FFFFFFFF);
FileAttach.lpszPathName := PChar(FileName);
nFileCount := 1;
lpFiles := @FileAttach;
Következő lépés, hogy a MAPI.DLL állományt betöltjük a memóriába.
MAPIModule := LoadLibrary(PChar(MAPIDLL));
Majd meghatározzuk, hogy a MAPISendMail metódus milyen címen található a DLL-ben.
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
Amennyiben ez a mutató nem NIL értékű, akkor meg is hívhatjuk a metódust a fentiekben előkészített paraméterekkel.
Result := SM(0, Application.Handle, m, MAPI_DIALOG or MAPI_LOGON_UI, 0);
A művelet eredményeképpen felbukkan az említett dialógusablak.