email Aufruf

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

email Aufruf

Beitrag von Rolf Ramacher »

bei WIN 7 läuft das ganze
bei WIN 8 gibt es die Meldung Das System kann die angegebene Datei nicht finden. ist der Aufruf bei WIN 8 anders ?

Code: Alles auswählen

		RunShell( "url.dll,FileProtocolHandler mailto:" + cEmail +"?subject=" + cSubject +"&body="+cAnrede , 'Rundll32.exe' )
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Tom »

Nein, das ist bei Windows 8 nicht anders. Welche Datei kann nicht gefunden werden - URL.DLL oder RUNDLL32.EXE? Es könnte unter sehr originellen Bedingungen etwas mit den Rechten zu tun haben. Lass doch mal prüfen, ob beide Dateien unter Laufbedingungen Deiner Applikation auch sichtbar sind (Windows-Suche). "URL.DLL" befindet sich in "\Windows\System32", "RUNDLL32.EXE" ebenfalls, bei 64-Bit-Systemen zusätzlich in "\Windows\SysWOW64".
Herzlich,
Tom
DelUser01

Re: email Aufruf

Beitrag von DelUser01 »

Hallo
Rolf Ramacher hat geschrieben:

Code: Alles auswählen

RunShell( "url.dll,FileProtocolHandler mailto:" + cEmail +"?subject=" + cSubject +"&body="+cAnrede , 'Rundll32.exe' )
Nette Funktion mit RunShell(...)! Man lernt nie aus...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: email Aufruf

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:

Code: Alles auswählen

		RunShell( "url.dll,FileProtocolHandler mailto:" + cEmail +"?subject=" + cSubject +"&body="+cAnrede , 'Rundll32.exe' )
RunShell() ... wie wäre es per Windows API und einem DLLCall

Code: Alles auswählen

FUNCTION SendMail( cMailto, cSubject, cBody )
LOCAL cFile := "mailto:"+cMailto+;
               " ?subject="+cSubject+;
               " &body="+cBody

DllCall( "SHELL32.DLL",DLL_STDCALL,"ShellExecuteA",AppDesktop():getHWND(),"Open",cFile,Nil,Curdir(),SW_NORMAL)
RETURN .T.
gruss by OHR
Jimmy
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Rolf Ramacher »

Hallo Jimmy,

danke ich werde es mal ausprobieren. aber was steht bei der Funktion die die SendMail() aufgerufen hat da ja ein .t. zurückgegeben wird. ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Herbert »

Rolf, DllCall() gibt den Rückgabewert der ausgeführten DLL-Funktion zurück.
In diesem Fall würde dir einzig geholfen, wenn der PC kein Email-Programm installiert hätte, sonst ist der Aufruf immer OK, selbst wenn später ein Fehler im Email-Programm auftreten würde.
Bei Runshell erhälst du ja auch nur dann eine -1, wenn der Aufruf schief geht, sonst eine 0.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von brandelh »

falls man RunShell() nicht asyncron ausführt.
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Rolf Ramacher »

also bei Win 8 fehlst die rundll32.exe - das ist aber doch eine Systemdatei die kann doch nicht fehlen normalerweise
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Tom »

also bei Win 8 fehlst die rundll32.exe
Nein, tut sie nicht. Jedenfalls nicht standardmäßig. Aber irgendein Spaßvogel könnte sie gelöscht haben, oder ein findiger System-Administrator, der glaubt, auf diese Weise Malware auszusperren.
Dat Dingen is nich ganz unwichtich:

http://de.wikipedia.org/wiki/Rundll32.exe
Herzlich,
Tom
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Rolf Ramacher »

so ich wollte jetzt bei mir das Beispiel von Jimmy umsetzen - bringt bei mir Win7 eine Fehlermeldung
unbekannte Variable SW_NORMAL

die dll.ch und die fileio.ch habe ich eingebunden- fehlt vielleicht noch eine ch-Datei ?

Gefunden FC_NORMAL ist richtig

aber ich bekomme es nicht hin - das ich den Abenser mit übergebe mit Zeilenschaltung. Chr(13) funkt. auch nicht - alles in einer zeile

Code: Alles auswählen

cBody:=cAnrede
		cBody+=CRLF
		cBody+=CRLF
		cBody+="Mit freundlichen Grüßen"+CRLF
		cBody+="SPRINTER Software Gmbh"
		SendMail(cEmail,cSubject,cBody)
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Wolfgang Ciriack »

Hier sind die Definitionen:

Code: Alles auswählen

#define SW_HIDE             0
#define SW_SHOWNORMAL       1
#define SW_NORMAL           1
#define SW_SHOWMINIMIZED    2
#define SW_SHOWMAXIMIZED    3
#define SW_MAXIMIZE         3
#define SW_SHOWNOACTIVATE   4
#define SW_SHOW             5
#define SW_MINIMIZE         6
#define SW_SHOWMINNOACTIVE  7
#define SW_SHOWNA           8
#define SW_RESTORE          9
#define SW_SHOWDEFAULT      10
#define SW_MAX              10
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von brandelh »

ist das HTML eMail ?

" Text <br> weiterer Text" ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: email Aufruf

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:aber ich bekomme es nicht hin - das ich den Abenser mit übergebe mit Zeilenschaltung. Chr(13) funkt. auch nicht - alles in einer zeile

Code: Alles auswählen

cBody:=cAnrede
		cBody+=CRLF
		cBody+=CRLF
		cBody+="Mit freundlichen Grüßen"+CRLF
		cBody+="SPRINTER Software Gmbh"

		SendMail(cEmail,cSubject,cBody)
was für ein Email Programm ?

wie Hubert schon andeutete ist es z.b. bei Outlook HTML Syntax, auch wenn es als Text verschickt wird.

Code: Alles auswählen

  cBody := Strtran(cBody,Chr(13),'%0d')
  cBody := Strtran(cBody,Chr(10),'%0a')
  cBody := Strtran(cBody,' ','%20')
  cBody := Strtran(cBody,Chr(38),'%26')
  cBody := Strtran(cBody,'?','%3f')
  cBody := Strtran(cBody,'=','%3d')
p.s. erstaunlich das es mit dem "ß" geht.
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Wolfgang Ciriack »

"SPRINTER Software Gmbh"
und bitte "GmbH" :)
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von brandelh »

Bei meinem Thunderbird wird <br> einfach als Text interpretiert.
Aber dies funktioniert:

Code: Alles auswählen

proc main()
   local cEmail   := "hubert.brandel@gmx.de"
   local cSubject := "Test von Hubert über MailTo"
   local cAnrede  := "Hallo Hubert, wie gehts ... %0c%0aNeue Zeile"
   ? "call runshell eMail Handler"

   RunShell( "url.dll,FileProtocolHandler mailto:" + cEmail +"?subject=" + cSubject +"&body="+cAnrede , 'Rundll32.exe' )
   ? "Ende"
   inkey(10)

return
Am Besten also eine Funktion nach Jimmys Vorlage bauen, die den Body übersetzt und danach vergessen ;-)
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von Rolf Ramacher »

Hubert danke für den Hinweis - klappt - jetzt muss ich es nur noch bei Win8 testen
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: email Aufruf

Beitrag von brandelh »

Jimmy hatte die richtige Syntax ;-)
Gruß
Hubert
Antworten