AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute -> EMail

Ein Thema von Urba · begonnen am 15. Sep 2005 · letzter Beitrag vom 23. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#1

ShellExecute -> EMail

  Alt 15. Sep 2005, 14:15
Hallo Leute,

Ich verwende

Delphi-Quellcode:
var strparam,strsubject,strbody,stremail : String;
//...
strparam := 'mailto:' + stremail + '?subject=' + strsubject + '&body=' + strbody;
ShellExecute(Handle,'open',PChar(strParam),nil,nil,SW_SHOWNORMAL)
um das Standartemailprogramm zu starten und die EMail zum Versenden vorzubereiten. Jetzt habe ich allerdings festgestellt dass es aber ab einer bestimmten Bodylänge (~ 2000 Zeichen) überhaupt nicht mehr funktioniert. Es passiert gar nichts. Kann mir das jemand erklären ?

Gruß
Urba
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#2

Re: ShellExecute -> EMail

  Alt 16. Sep 2005, 12:12
niemand ?
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.193 Beiträge
 
Delphi 12 Athens
 
#3

Re: ShellExecute -> EMail

  Alt 16. Sep 2005, 12:17
Na vielleicht ist einfach der Textpuffer, welchen ShellExecute zum übermitteln der Daten verwendet einfach nicht größer.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: ShellExecute -> EMail

  Alt 16. Sep 2005, 12:54
Zitat von Urba:
...um das Standartemailprogramm zu starten und die EMail zum Versenden vorzubereiten. Jetzt habe ich allerdings festgestellt dass es aber ab einer bestimmten Bodylänge (~ 2000 Zeichen) überhaupt nicht mehr funktioniert. Es passiert gar nichts. Kann mir das jemand erklären ?
Das hängt vom EMail Client ab.
Vermutung:
der Client ist in C/C++ programmiert.
Da ist es gang und gebe, einen festen Puffer für Stringverarbeitung einzusetzen.
Auch in der RTL/VCL von Delphi gibt es leider ähnliche Limitierungen.
Ein Beispiel; die Format Funktion kann max. 4096 Zeichen verarbeiten:
Delphi-Quellcode:
procedure FmtStr(var Result: string; const Format: string;
  const Args: array of const);
var
  Len, BufLen: Integer;
  Buffer: array[0..4097] of Char; // <-- schon S......
begin
  BufLen := SizeOf(Buffer);
Andreas
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#5

Re: ShellExecute -> EMail

  Alt 16. Sep 2005, 15:28
OK danke für eure Antworten, aber es muss doch möglich sein mehr als diesen festen Puffer an eine Anwendung zu übergeben oder ? Wir nutzen zum beispiel im Geschäft auch ein programm welches EMailtext an den EMailClient übergibt und dort hatte ich noch nie Probleme größere EMails weiterzugeben

Gruß
Urba
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ShellExecute -> EMail

  Alt 16. Sep 2005, 15:36
Mit Shellexecute aber offensichtlich nicht. Wer weiß wie das bei euch im Geschäft realisiert ist, wie dort mit dem E-Mail Client kommuniziert wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: ShellExecute -> EMail

  Alt 16. Sep 2005, 16:21
Ich versuch's nochmal:
Es gibt 3 Fehlerquellen, die verhindern, dass die Daten komplett ankommen.
1.) Deine Daten enthalten #0
Delphi-Quellcode:
strparam := 'mailto:' + stremail + '?subject=' + strsubject + '&body=' + strbody;
if Length(strparam) <> StrLen(strparam) then
   ShowMessage('Achtung ! Body (oder subject) enthält min. ein NUL-Zeichen');
2.) Das Betriebssystem ist nicht in der Lage eine beliebig Grosse Menge an Kommandozeilenparametern zu übergeben.
Falls dies so ist, dann gibt es wahrscheinlich Unterschiede zwischen den versch. Windows Versionen.
Hier könnte man Testprogramme schreiben, um diese Limits auszuloten.

3.) Das Limit liegt, wie von mir beschrieben am EMail-Client.
Jeder EMail-Client ist verschieden! Kann sein, eine neuere Version kann es besser als eine alte Version.
MS Outlook 98 kann z.B. mit 'body=' gar nix anfangen.
Wenn's ganz blöd läuft, kann es im EMail-Client auch zu einem Bufferüberlauf mit anschliesendem Absturz kommen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.193 Beiträge
 
Delphi 12 Athens
 
#8

Re: ShellExecute -> EMail

  Alt 17. Sep 2005, 11:30
Wieviel in den den Windowspuffer reingeht, hatten wir doch schonmal hier irgendwo rausgefunden ... ich weiß nur nicht mehr wo und bei welchem Theme ... allerdings müßte da auch ein Beitrag von mir mit drin sein (schränkt schonal die Suche ein -.-'')
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#9

Re: ShellExecute -> EMail

  Alt 20. Sep 2005, 17:52
Hallo Leute,

Danke für eure zahlreichen Antworten, aber richtig weitergekommen bin ich dennoch. Ich habe auch die Tests wie shmia beschrieben gemacht, konnte allerdings nicht finden. Nochmals zu dem Programm was wir im Geschäft benutzen. Es ist an KEINEN STANDARTEMAILCLIENT gebunden, sprich es schickt was es schicken soll an den Standartemailclient. Damit muss es doch im Prinzip auch ShellExecute o.ä. benutzen oder irre ich mich? Ich verzweifel noch ... gibt es eine andere Möglichkeit die Daten zu übergeben ?

Gruß
Urba
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.193 Beiträge
 
Delphi 12 Athens
 
#10

Re: ShellExecute -> EMail

  Alt 21. Sep 2005, 16:53
Da du einen Derartigen Puffer ja nicht umgehen kannst,

könntest du es mal per DDE/OLE-Schittstelle versuchen ... damit sollte es möglich sein.
Aber frag mich nicht wie -.-''
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz