function SendMailMAPI(const Subject, Body, FileName, SenderName, SenderEMail, RecepientName, RecepientEMail: String) : Integer; var message: TMapiMessage; lpSender, lpRecepient: TMapiRecipDesc; FileAttach: TMapiFileDesc; SM: TFNMapiSendMail; MAPIModule: HModule; begin FillChar(message, SizeOf(message), 0); with message do begin if (Subject<>\'\') then begin lpszSubject := PChar(Subject) end; if (Body<>\'\') then begin lpszNoteText := PChar(Body) end; if (SenderEMail<>\'\') then begin lpSender.ulRecipClass := MAPI_ORIG; if (SenderName=\'\') then begin lpSender.lpszName := PChar(SenderEMail) end else begin lpSender.lpszName := PChar(SenderName) end; lpSender.lpszAddress := PChar(SenderEMail); lpSender.ulReserved := 0; lpSender.ulEIDSize := 0; lpSender.lpEntryID := nil; lpOriginator := @lpSender; end; if (RecepientEMail<>\'\') then begin lpRecepient.ulRecipClass := MAPI_TO; if (RecepientName=\'\') then begin lpRecepient.lpszName := PChar(RecepientEMail) end else begin lpRecepient.lpszName := PChar(RecepientName) end; lpRecepient.lpszAddress := PChar(RecepientEMail); lpRecepient.ulReserved := 0; lpRecepient.ulEIDSize := 0; lpRecepient.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpRecepient; end else begin lpRecips := nil end; if (FileName=\'\') then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(FileAttach, SizeOf(FileAttach), 0); FileAttach.nPosition := Cardinal($FFFFFFFF); FileAttach.lpszPathName := PChar(FileName); nFileCount := 1; lpFiles := @FileAttach; end; end; MAPIModule := LoadLibrary(PChar(MAPIDLL)); if MAPIModule=0 then begin Result := -1 end else begin try @SM := GetProcAddress(MAPIModule, \'MAPISendMail\'); if @SM<>nil then begin Result := SM(0, Application.Handle, message, MAPI_DIALOG or MAPI_LOGON_UI, 0); end else begin Result := 1 end;
finally FreeLibrary(MAPIModule); end; end; if Result<>0 then begin MessageDlg(\'Error sending mail (\'+IntToStr(Result)+\').\', mtError, [mbOk], 0) end; end;
//For at sende: procedure TForm1.Button1Click(Sender: TObject); Const MailToMail = \'en@mail.dk\'; begin SendMailMAPI(\'Test\', \'Hej dette er en test\', \'C:\\min.fil\', \'dkn\', \'dkn@pc.dk\', \'dkn\', MailToMail); end;
Denne \"mapicontrol\" eller \"Mapikode\" virker helt fint hvis det er Outlook der er mailprogrammet. Men på mit arbejde er det f.eks. \"skolekomprogrammet\": First Client der er sat op som mailprogram.
Denne kode vil altid prøve at bruge default mail program. Så hvis skolekomprogrammet understøtter MAPI vil det også virke hos dig. Omvendt så påstår Lotus også at Lotus Notes understøtter MAPI jeg hare bare aldrig hørt/set et eksempel der virker.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.