Avatar billede eht Nybegynder
19. januar 2002 - 10:06 Der er 8 kommentarer og
1 løsning

Vedhæft fil til E-mail i standard-Emailprogram fra Delphi

Fra mit program skal det være muligt at emailprogrammet åbner og at der til denne email allerede er vedhæftet en fil.

Jeg har prøvet den med shellExecute og
mailto: .....osv, men det virker ikke.

Er der mon nogen her der kan.

Jeg bruger Delphi 4

Mvh Eht
Avatar billede cms Nybegynder
20. januar 2002 - 13:26 #1
mon ikke du skal bruge noget MAPI-tingeling?
Avatar billede cms Nybegynder
20. januar 2002 - 13:29 #2
her er en komponent der skulle kunne det:
http://innovision.it/www/mapicontrol.zip
Avatar billede dkn Nybegynder
20. januar 2002 - 21:06 #3
MAPI er løsningen, du gør sådan:

Tilføj MAPI til din uses.

Insæt denne function:

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;
Avatar billede cms Nybegynder
20. januar 2002 - 21:18 #4
Så enkelt kan det gøres :-)
Avatar billede nca Juniormester
21. januar 2002 - 08:19 #5
Er det rigtigt, at man skal fuldende sessionen i Outlook?
Avatar billede eht Nybegynder
21. januar 2002 - 14:18 #6
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.

Vil \"Mapi\" altid forsøge at benytte Outlook??

mvh EHT
Avatar billede stoney Nybegynder
21. januar 2002 - 14:41 #7
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.

Stoney
Avatar billede dkklein Nybegynder
21. januar 2002 - 15:26 #8
Lotus Notes understøtter MAPI. Har haft det kørende på arbejde med en Outlook client.
Avatar billede stoney Nybegynder
21. januar 2002 - 16:42 #9
dkklein>>

Må jeg ikke prøve at se din kode ?

Stoney
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester