Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Datei mit LotusNotes aus Delphi Programm versenden

  Alt 13. Aug 2010, 22:38
So, nach einigen Anläufen und unterschiedlichen Versionen, läuft es jetzt.
Hier mein Code, für die, die es interessiert oder auch das Problem haben wie ich.

Delphi-Quellcode:
function SendMailMAPI(const Subject, Body, FileName, SenderName, SenderEMail,
                  RecepientName, RecepientEMail: String) : Integer;
var
  msg: TMapiMessage;
  lpSender,
  lpRecepient: TMapiRecipDesc;
  FileAttach: TMapiFileDesc;
  SM: TFNMapiSendMail;
  MAPIModule: HModule;
begin
 FillChar(msg, SizeOf(msg), 0);
 with msg 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('SMTP:'+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('SMTP:'+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, msg, MAPI_DIALOG or MAPI_LOGON_UI, 0);
       // Result := SM(0, Application.Handle, msg, 0, 0);
     end
     else
     begin
       Result := 1
     end;
   finally
     FreeLibrary(MAPIModule);
   end;
 end;
 if Result<>0 then
 begin
   MessageDlg('Fehler beim Versenden ('+IntToStr(Result)+').', mtError, [mbOk], 0);
 end;
end;
...
procedure Tfrm_main.tbtn_daten_menu_daten_sendenClick(Sender: TObject);
var
 filename, subject, msg, sendername, senderemail, recepientname, recepientemail : String;
begin
 filename := '<pfad zur Datei>'
 subject := 'Betreff';
 msg := 'Nachricht.';
 sendername := 'Sendername';
 senderemail := 'Sender@Email.de';
 recepientname := 'RecepientName';
 recepientemail := 'Recepient1@mail.com,Recepient2@mail.com';

 SendMailMAPI(subject, msg, filename, sendername, senderemail, RecepientName, RecepientEMail);
end;
  Mit Zitat antworten Zitat