Autor |
Beitrag |
Eagle-Data
      
Beiträge: 39
WinXP SP2 (Pro), Win 2000
D5 Ent., D7 Ent.
|
Verfasst: Di 14.12.04 16:17
Hi, ich will aus meinem Programm raus, Outlook (2003) mit mehreren Dateien als Anhang öffnen.
Leider bekomm ich das nur mit einer Datei hin:
Outlook.exe mit Parameter /a "FILE" starten
Quelltext 1:
| ShellExecute(self.Handle,'open',PChar(pfad),PChar(param),nil,SW_SHOW); |
wobei pfad, der pfad zu outlook.exe und param /a und der Dateiname ist.
Wie kann ich mehrere Dateien hinzufügen? Mit mehreren /a´s gehts nicht.
Danke
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Di 14.12.04 16:27
Mit OLE!
Als MailAction "Display" übergeben, MailTo der Empfänger, MailBody der Body als String mit Umbrüchen via #13.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| procedure MakeAppendMail(MailTo, MailSubject, MailAction, MailBody: String;MailAttach: array of String); var Outlook: OLEVariant; MailItem: Variant; X: Integer; begin try Outlook := GetActiveOleObject('Outlook.Application'); except try Outlook:=CreateOleObject('Outlook.Application'); except ShowMessage('Fehler! Outlook ist weder geöffnet noch konnte es gestartet werden!'); VarClear(Outlook); exit; end; end;
MailItem := Outlook.CreateItem(0); MailItem.Subject := MailSubject; MailItem.To := MailTo;
MailItem.Body := '';
MailItem.Body := MailBody;
MailItem.Display;
If Length(MailAttach) > 0 then begin For X := 0 to Length(MailAttach)-1 do begin If FileExists(MailAttach[X]) = True then begin If FileExists(copy(MailAttach[X],0,length(MailAttach[X])-4) + '_1.pdf') then begin MailItem.Attachments.Add(copy(MailAttach[X],0,length(MailAttach[X])-4) + '_1.pdf'); end else begin MailItem.Attachments.Add(MailAttach[X]); end; end else begin ShowMessage('Die Datei ' + MaiLAttach[X] + ' kann nicht angehängt werden, da sie nicht existiert!'); end; end; end;
If MailAction = 'Display' then begin MailItem.Display; end;
If MailAction = 'Send' then begin MailItem.Send; end;
Outlook := Unassigned; end; |
Etwas dilletantisch geproggt.
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
Eagle-Data 
      
Beiträge: 39
WinXP SP2 (Pro), Win 2000
D5 Ent., D7 Ent.
|
Verfasst: Di 14.12.04 18:08
Das nützt mir nichts. Ich möchte ja die Mail nicht direkt versenden, sondern das sich Outlook mit der neuen Mail öffnet und ich dann Empfänger und alles andere eintippen kann.
Es muss doch irgendwie gehen das ich mehrere Dateien hinzufüge.
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Di 14.12.04 18:44
Ja, es geht: Les Dir mal durch was ich geschrieben hab!
Mit Display öffnet er die Mail, Body und Empfänger kannst leer lassen dann kann der User das selbst eintragen.
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
Eagle-Data 
      
Beiträge: 39
WinXP SP2 (Pro), Win 2000
D5 Ent., D7 Ent.
|
Verfasst: Mi 15.12.04 10:28
Hmm ok wer lesen kann ist klar im Vorteil
Nur bekomm ich jetzt eine Zugriffsverletzung wenn ich die Procedure aufrufe:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var attach:array of string; ... for i:=1 to paramcount do attach[i-1]:=paramstr(i);
MakeAppendMail('','','Display','',attach); |
Wo liegt mein Fehler?
|
|
Eagle-Data 
      
Beiträge: 39
WinXP SP2 (Pro), Win 2000
D5 Ent., D7 Ent.
|
Verfasst: Mi 15.12.04 10:39
Titel: Problem gelöst
Ok ich habs.
es fehlte eine entscheidene Zeile:
Delphi-Quelltext 1:
| SetLength(attach,paramcount); |
|
|
noctua
      
Beiträge: 170
|
Verfasst: So 19.12.04 15:32
Eagle-Data hat folgendes geschrieben: |
Leider bekomm ich das nur mit einer Datei hin:
Outlook.exe mit Parameter /a "FILE" starten
Quelltext 1:
| ShellExecute(self.Handle,'open',PChar(pfad),PChar(param),nil,SW_SHOW); |
wobei pfad, der pfad zu outlook.exe und param /a und der Dateiname ist.
|
ich bekomme es nicht ma mit einer Datei hin ....
Quelltext 1:
| ShellExecute(Application.Handle,'open',PChar('mailto:peter@web.de?subject=Betreff&body=lalalalalala'),PChar('D:\text.txt'),nil,sw_ShowNormal); |
das müsste doch eigentlich gehen oder?
_________________ Am ende sterben eh alle ................
|
|
|