Seite 1 von 1

email Aufruf

Verfasst: Do, 02. Okt 2014 10:43
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' )

Re: email Aufruf

Verfasst: Do, 02. Okt 2014 13:15
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".

Re: email Aufruf

Verfasst: So, 05. Okt 2014 15:23
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...

Re: email Aufruf

Verfasst: Mo, 06. Okt 2014 3:48
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.

Re: email Aufruf

Verfasst: Mo, 06. Okt 2014 9:19
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. ?

Re: email Aufruf

Verfasst: Mo, 06. Okt 2014 17:50
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.

Re: email Aufruf

Verfasst: Di, 07. Okt 2014 11:12
von brandelh
falls man RunShell() nicht asyncron ausführt.

Re: email Aufruf

Verfasst: So, 12. Okt 2014 10:57
von Rolf Ramacher
also bei Win 8 fehlst die rundll32.exe - das ist aber doch eine Systemdatei die kann doch nicht fehlen normalerweise

Re: email Aufruf

Verfasst: So, 12. Okt 2014 11:24
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

Re: email Aufruf

Verfasst: Mi, 15. Okt 2014 17:53
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)

Re: email Aufruf

Verfasst: Mi, 15. Okt 2014 20:31
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

Re: email Aufruf

Verfasst: Mi, 15. Okt 2014 21:14
von brandelh
ist das HTML eMail ?

" Text <br> weiterer Text" ?

Re: email Aufruf

Verfasst: Do, 16. Okt 2014 0:56
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.

Re: email Aufruf

Verfasst: Do, 16. Okt 2014 7:04
von Wolfgang Ciriack
"SPRINTER Software Gmbh"
und bitte "GmbH" :)

Re: email Aufruf

Verfasst: Do, 16. Okt 2014 8:49
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 ;-)

Re: email Aufruf

Verfasst: Do, 16. Okt 2014 11:28
von Rolf Ramacher
Hubert danke für den Hinweis - klappt - jetzt muss ich es nur noch bei Win8 testen

Re: email Aufruf

Verfasst: Do, 16. Okt 2014 12:09
von brandelh
Jimmy hatte die richtige Syntax ;-)