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 "Gmb
H"
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