Fehler nach Hause melden
Moderator: Moderatoren
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Klaus,
BLAT nutzt keinen Mailclient! Ganz egal, was da eingerichtet ist.
Du kannst ja die Mails vorbereiten (als Textdatei) und jedes Mal prüfen, ob eine Internetverbindung besteht (machen wir auch, bevor die Kunden sich die Meldungen herunterladen können. Bei uns wird sie dann aufgebaut, sofern sie nicht aktiv ist) - wenn ja, schickst Du sie raus.
Viele Grüße,
Martin
BLAT nutzt keinen Mailclient! Ganz egal, was da eingerichtet ist.
Du kannst ja die Mails vorbereiten (als Textdatei) und jedes Mal prüfen, ob eine Internetverbindung besteht (machen wir auch, bevor die Kunden sich die Meldungen herunterladen können. Bei uns wird sie dann aufgebaut, sofern sie nicht aktiv ist) - wenn ja, schickst Du sie raus.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Martin,
genau das habe ich vor. Denn wenn der Fehler auftritt, während der User gerade nicht online ist, dann habe ich irgendwie ein Problem. Kein großes, denn mir fehlt dann einfach nur die Fehlermeldung.
Mein Gedanke zur Vorgehensweise ist daher: Ich kontrolliere, ob eine Internetverbindung besteht. Die Funktion dazu habe ich ohnehin schon für meine Updateroutine. Besteht die Verbindung, geht die Mail raus. Besteht sie nicht, wird die Meldung gespeichert. Und beim nächsten Programmstart wird automatisch geprüft, ob ein Fehlerprotokoll gepeichert ist. Wenn ja: Wiederum auf Internet prüfen und senden. In beiden Fällen werde ich vermutlich dem User bei Nichtvorhandensein einer Verbindung einen Hinweis rausgeben, das er bitte die Verbindung herstellen möchte. Oder er das Senden abbrechen kann.
Jan
genau das habe ich vor. Denn wenn der Fehler auftritt, während der User gerade nicht online ist, dann habe ich irgendwie ein Problem. Kein großes, denn mir fehlt dann einfach nur die Fehlermeldung.
Mein Gedanke zur Vorgehensweise ist daher: Ich kontrolliere, ob eine Internetverbindung besteht. Die Funktion dazu habe ich ohnehin schon für meine Updateroutine. Besteht die Verbindung, geht die Mail raus. Besteht sie nicht, wird die Meldung gespeichert. Und beim nächsten Programmstart wird automatisch geprüft, ob ein Fehlerprotokoll gepeichert ist. Wenn ja: Wiederum auf Internet prüfen und senden. In beiden Fällen werde ich vermutlich dem User bei Nichtvorhandensein einer Verbindung einen Hinweis rausgeben, das er bitte die Verbindung herstellen möchte. Oder er das Senden abbrechen kann.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Ich hab da mal eine Frage an die, die sich mit blat auskennen. Ich hab mir die aktuellste Version runtergeladen, 2.6.2, die gibt es auch als dll. Der Aufruf sieht so aus:
Und nix passiert. Was ist da falsch dran? Der Rückgabewert ist übrigens 1.
Jan
Code: Alles auswählen
DllCall("blat.dll", DLL_STDCALL, "Send", "-serverSMTP smtp.webserver.de" + ;
"-u benutzername " + ;
"-pw passwort " + ;
"-to adresse@provider.de " + ;
"-f adresse@provider.de" + ;
"-i Absender" + ;
"-subject Test " + ;
"-body Dasistdertext" )
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hmm - mein Aufruf damals (ältere Version) war so:
also der Betreff und die Empfängermailadressen sind in "" eingefasst - und der Body (sofern Du ihn nicht aus einer Datei nimmst) müsste sicherlich auch in "" eingefasst werden.
Viele Grüße,
Martin
Code: Alles auswählen
RunShell( '/C ' + APP_ROOT + '\BLAT.EXE ' + APP_ROOT + '\mailtext.txt -subject "Backupdaten vom Server" -to "' + MEMVAR->cMailadressen + '" -attach ' + cZipFile + ' -server localhost -f ' + WEBMASTER + ' -log ' + mlogpfad + '\' + dtos( date() ) + '_' + strtran( time(), ":", "" ) + '.log',,.t.,.t. )
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hallo Martin,
ja, da bin ich inzwischen auch drauf gekommen. Nun dauert der Aufruf definitiv wesentlich länger, also passiert da wohl irgendwas. Aber die Mail kommt immer noch nicht an. und der Rückgabewert ist immer noch 1.
Ich nehm übrigens die dll, nicht die exe. Aber der Aufruf soll der gleiche sein. Der Funktionsaufruf "Send" ist übrigens korrekt. Hat mich etwas gekostet, das zu finden, und alles andere ergibt einen Laufzeitfehler wegen einer fehlenden Funktion. Es muß also irgendiwe an den Parametern liegen. Die ich aber alle überprüft habe, die sind zumindest korrekt geschrieben.
Wo ich noch unsicher bin: Muß ich die Parameter bei DllCall nun per Kommata trennen oder nicht? Ich hab mit dem Teil zu wenig Erfahrungen, aber die Hilfe sagt, ja.
Jan
ja, da bin ich inzwischen auch drauf gekommen. Nun dauert der Aufruf definitiv wesentlich länger, also passiert da wohl irgendwas. Aber die Mail kommt immer noch nicht an. und der Rückgabewert ist immer noch 1.
Ich nehm übrigens die dll, nicht die exe. Aber der Aufruf soll der gleiche sein. Der Funktionsaufruf "Send" ist übrigens korrekt. Hat mich etwas gekostet, das zu finden, und alles andere ergibt einen Laufzeitfehler wegen einer fehlenden Funktion. Es muß also irgendiwe an den Parametern liegen. Die ich aber alle überprüft habe, die sind zumindest korrekt geschrieben.
Wo ich noch unsicher bin: Muß ich die Parameter bei DllCall nun per Kommata trennen oder nicht? Ich hab mit dem Teil zu wenig Erfahrungen, aber die Hilfe sagt, ja.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Keine Ahnung - habe damals das Commandlinetool verwendet.
Aber bei mir hieß der Parameter -server und nicht -serverSMTP
Viele Grüße,
Martin
Aber bei mir hieß der Parameter -server und nicht -serverSMTP
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hallo Martin,
ich hab das jetzt mal in den RunShell übernommen, mit der exe. Es ändert sich nichts.
-senderSMTP ist übrigens das Gleiche wie -sender. Das ist wohl mal ergänzt worden, weil inzwischen auch andere Protokolle unterstützt werden, und da heißen die Parameter dann angepasst entsprechend.
Jan
ich hab das jetzt mal in den RunShell übernommen, mit der exe. Es ändert sich nichts.
-senderSMTP ist übrigens das Gleiche wie -sender. Das ist wohl mal ergänzt worden, weil inzwischen auch andere Protokolle unterstützt werden, und da heißen die Parameter dann angepasst entsprechend.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hallo Jan,
ich hoffe doch du hast die Adressen (email, server, Kennwort) als Variablen richtig gesetzt
Hier habe ich in der FAQ die Liste der Rückgabewerte gefunden : http://www.blat.net/examples/blat_return_codes.htm
1 hat mehrere Bedeutungen, nur 0 ist OK !
ich hoffe doch du hast die Adressen (email, server, Kennwort) als Variablen richtig gesetzt
Hier habe ich in der FAQ die Liste der Rückgabewerte gefunden : http://www.blat.net/examples/blat_return_codes.htm
1 hat mehrere Bedeutungen, nur 0 ist OK !
PS: das ist alles sehr interessant insbesondere die DLL Version !1 * Unable to open SMTP socket
* SMTP get line did not return 220
* command unable to write to socket
* Server does not like To: address
* Mail server error accepting message data.
0 OK
1 File name (message text) not given
1 Bad argument given
2 File (message text) does not exist
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Moin Hubert,
da werde ich morgen noch mal die einzelnen Parameter durchgehen. Irgendwo ist da der Wurm drin .
Jan
da werde ich morgen noch mal die einzelnen Parameter durchgehen. Irgendwo ist da der Wurm drin .
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hi,
ich habe mir die Dateien geladen und dieses PRG mit RunShell() und Auswertung der Rückgabewerte gebaut.
Alle 3 Versandadressen funktionieren einwandfrei, allerdings dauert der Versand 2-3 Sekunden.
die Anmeldedaten muss jeder von sich holen, Server Adressen sind beim jeweiligen Anbieter hinterlegt.
Diese kenne ich:
Nun versuche ich diese auf DLL umzustellen.
Aufrufzeile, Anmeldedaten mit ... ersetzt:
ich habe mir die Dateien geladen und dieses PRG mit RunShell() und Auswertung der Rückgabewerte gebaut.
Alle 3 Versandadressen funktionieren einwandfrei, allerdings dauert der Versand 2-3 Sekunden.
Code: Alles auswählen
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Inkey.ch"
#include "UserInfo.CH" // ALLE ANGABEN IN OEM, da CMD Programme OEM erwarten !!!
// ABER bei RunShell fehlen dann die Umlaute im subject !
// da wundert man sich doch oder ???
/* UserInfo.CH enthält die Anmeldeinfo als defines ... die liefere ich natürlich nicht mit :-)
// GMX
#define cGmxLogonID '...'
#define cGmxLogonPW '...'
#define cGmxSMTP 'mail.gmx.de' // das ist der GMX SMTP Server, nur AUTH login !
#define cGmxToHB '...'
etc.
*/
procedure main()
local cUser, cPW, cSMTP, cTo, cFrom, cArt, nRuck, cMeldung, cSubject, cAttach, cParameter, cLogFile, cEMailDat, cReplyTo
cls
cBlatPfad := "FULL\"
cLogFile := "LOG_BLAT.TXT"
cEMailDat := "eMail.txt" // diese Datei wurde in ANSI erstellt und richtig bermittelt !!!
cArt := "1"
@ 1,1 say "blad Testprogramm "+appname()
@ 3,1 say "Versandart w„hlen: " get cArt picture "#"
@ 5,1 say " 1 = GMX.DE "
@ 6,1 say " 2 = WEB.DE "
@ 7,1 say " 3 = 1und1-Forum "
read // Inhalt mit Blank muss von " = chr(34) eingeschlossen werden !
do case
case cArt=="1"
cArt := " (GMX)"
cUser := cGmxLogonID // kann die eMail-Adresse sein, besser ist BenutzerID
cPW := cGmxLogonPW
cSMTP := cGmxSMTP
cFrom := cGmxToHB // dies muss die eMail-Adresse sein
case cArt=="2"
cArt := " (WEB)"
cUser := cWebLogonID
cPW := cWebLogonPW
cSMTP := cWebSMTP
cFrom := cWebLogonID
cReplyTo := chr(34)+cGmxToHB+chr(34) // eventuell eine andere Rckantwortadresse ?
case cArt=="3"
cArt := " (1und1-Forum)"
cUser := c1und1LogonID
cPW := c1und1LogonPW
cSMTP := c1und1SMTP
cFrom := c1und1LogonID
cReplyTo := chr(34)+c1und1ToHB+chr(34) // eventuell eine andere Rckantwortadresse ?
otherwise
@ 20,1 say "ungltige Auswahl, keine Aktion"
inkey(5)
quit
end
cTo := chr(34)+cGmxToHB+chr(34) // ein Empf„nger oder Kommaseparierte Liste
// CC und BCC teste ich hier jetzt nicht.
cSubject := chr(34)+"HB Blat Test ber RunShell"+cArt+chr(34) // deutsche Umlaute in OEM ! " == chr(34)
cAttach := chr(34)+"XbaseCMD.PRG"+chr(34)
// variable Parameter auf "" setzen oder um Schlsselw”rter erg„nzen
if empty(cReplyTo) // auch NIL
cReplyTo := "" // keine Angabe
else
cReplyTo := " -replyto "+cReplyTo+" "
endif
if empty(cAttach)
cAttach := ""
else
cAttach := " -attach "+cAttach
endif
if empty(cLogFile)
cLogFile := ""
else
cLogFile := " -log "+cLogFile+" -timestamp "
endif
cParameter := cEMailDat+" -subject "+cSubject+" -to "+cTo+ ;
" -server "+cSMTP+" -f "+cFrom+cReplyTo+cAttach+;
" -u "+cUser+" -pw "+cPW+cLogFile
// so kann man den Aufruf selbst sehr gut prüfen, aber Vorsicht - ZUGANGSDATEN sind dort auch drinn !!!
memowrit("LOG_RunShell_Aufruf.TXT","BLAT.EXE " + ConvToAnsiCP(cParameter))
// Aufruf SYNCRON - also im Vordergrund blokierend, damit ein Rckgabewert ermittelt wird !
// DIESE EXE ist in OEM / QUELLCODE und SET CHARSET, daher muss man die Parameter konvertieren ...
// das h„tte ich jetzt nicht erwartet ;-)
nRuck := RunShell( "/C "+cBlatPfad+"BLAT.EXE " + ConvToAnsiCP(cParameter), , .f., .f. ) // so stimmen auch Umlaute.
do case
case nRuck = - 1
@ 20,1 say "Rckgabe von BLAT:"
case nRuck = 0
@ 20,1 say "BLAT meldet 0, alles OK"
otherwise
@ 20,1 say "BLAT meldet "+alltrim(str(nRuck))+", meist eine Fehlermeldung"
end
@22,1 say "Programmende in 10 Sekunden oder Tastendruck"
inkey(10)
return
Diese kenne ich:
Code: Alles auswählen
#define cGmxSMTP 'mail.gmx.de'
#define cWebSMTP 'smtp.web.de'
#define c1und1SMTP 'smtp.1und1.de'
Aufrufzeile, Anmeldedaten mit ... ersetzt:
und so sieht das BLAT Protokoll aus:LOG_RunShell_Aufruf.TXT hat geschrieben: BLAT.EXE eMail.txt -subject "HB Blat Test über RunShell (1und1-Forum)"
-to "..." -server smtp.1und1.de -f ... -replyto "..." -attach "XbaseCMD.PRG"
-u ... -pw ... -log LOG_BLAT.TXT -timestamp
LOG_BLAT.TXT hat geschrieben:
2011.02.03 11:55:55 (Thu)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
2011.02.03 11:55:57 (Thu): Sending eMail.txt to ...
2011.02.03 11:55:57 (Thu): Subject: HB Blat Test über RunShell (GMX)
2011.02.03 11:55:57 (Thu): Login name is ...
2011.02.03 11:55:57 (Thu): Attached binary file: XbaseCMD.PRG
2011.02.03 11:55:58 (Thu)-------------End of Session------------------
2011.02.03 11:56:08 (Thu)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
2011.02.03 11:56:11 (Thu): Sending eMail.txt to ...
2011.02.03 11:56:11 (Thu): Subject: HB Blat Test über RunShell (WEB)
2011.02.03 11:56:11 (Thu): Login name is ...
2011.02.03 11:56:11 (Thu): Attached binary file: XbaseCMD.PRG
2011.02.03 11:56:11 (Thu)-------------End of Session------------------
2011.02.03 12:09:12 (Thu)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
2011.02.03 12:09:15 (Thu): Sending eMail.txt to ...
2011.02.03 12:09:15 (Thu): Subject: HB Blat Test über RunShell (1und1-Forum)
2011.02.03 12:09:15 (Thu): Login name is ...
2011.02.03 12:09:15 (Thu): Attached binary file: XbaseCMD.PRG
2011.02.03 12:09:15 (Thu)-------------End of Session------------------
2011.02.03 12:10:23 (Thu)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
2011.02.03 12:10:31 (Thu): Sending eMail.txt to ...
2011.02.03 12:10:31 (Thu): Subject: HB Blat Test über RunShell (GMX)
2011.02.03 12:10:31 (Thu): Login name is ...
2011.02.03 12:10:31 (Thu): Attached binary file: XbaseCMD.PRG
2011.02.03 12:10:33 (Thu)-------------End of Session------------------
2011.02.03 12:10:39 (Thu)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
2011.02.03 12:10:41 (Thu): Sending eMail.txt to ...
2011.02.03 12:10:41 (Thu): Subject: HB Blat Test über RunShell (WEB)
2011.02.03 12:10:41 (Thu): Login name is ...
2011.02.03 12:10:41 (Thu): Attached binary file: XbaseCMD.PRG
2011.02.03 12:10:42 (Thu)-------------End of Session------------------
2011.02.03 12:10:46 (Thu)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
2011.02.03 12:10:49 (Thu): Sending eMail.txt to ...
2011.02.03 12:10:49 (Thu): Subject: HB Blat Test über RunShell (1und1-Forum)
2011.02.03 12:10:49 (Thu): Login name is ...
2011.02.03 12:10:49 (Thu): Attached binary file: XbaseCMD.PRG
2011.02.03 12:10:50 (Thu)-------------End of Session------------------
- Dateianhänge
-
- XbaseCMD.PRG
- (3.88 KiB) 349-mal heruntergeladen
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
So nun die DLL Version, das ist ja genial !
Hat bei mir wunderbar funktioniert.
Wenn man das Programm mit ANSI linked (Quellcode umstellen), dann müsste der Zeichensatz immer stimmen.
Dann muss hier natürlich auch convtoAnsiCP() entfernt werden ...
PS: zunächst hatte ich "send" statt "Send" geschrieben und erhielt einen Fehler, dass die Funktion nicht gefunden wird !
Hat bei mir wunderbar funktioniert.
Wenn man das Programm mit ANSI linked (Quellcode umstellen), dann müsste der Zeichensatz immer stimmen.
Dann muss hier natürlich auch convtoAnsiCP() entfernt werden ...
Code: Alles auswählen
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Inkey.ch"
#include "DLL.ch"
#include "UserInfo.CH" // ALLE ANGABEN IN OEM, da CMD Programme OEM erwarten !!!
// ABER bei RunShell fehlen dann die Umlaute im subject !
// da wundert man sich doch oder ???
/* UserInfo.CH enthält die Anmeldeinfo als defines ...
// GMX
#define cGmxLogonID '...'
#define cGmxLogonPW '...'
#define cGmxSMTP 'mail.gmx.de' // das ist der GMX SMTP Server, nur AUTH login !
#define cGmxToHB '...'
*/
procedure main()
local cUser, cPW, cSMTP, cTo, cFrom, cArt, nRuck, cMeldung, cSubject, cAttach, cParameter, ;
cLogFile, cEMailDat, cReplyTo
local nBlatDll, cBlatDLLName := "FULL\BLAT.DLL"
cls
cLogFile := "LOG_BLAT.TXT"
cEMailDat := "eMail.txt" // diese Datei wurde in ANSI erstellt und richtig übermittelt !!!
cArt := "1"
@ 1,1 say "blad Testprogramm "+appname()
@ 3,1 say "Versandart wählen: " get cArt picture "#"
@ 5,1 say " 1 = GMX.DE "
@ 6,1 say " 2 = WEB.DE "
@ 7,1 say " 3 = 1und1-Forum "
read // Inhalt mit Blank muss von " = chr(34) eingeschlossen werden !
do case
case cArt=="1"
cArt := " (GMX)"
cUser := cGmxLogonID // kann die eMail-Adresse sein, besser ist BenutzerID
cPW := cGmxLogonPW
cSMTP := cGmxSMTP
cFrom := cGmxToHB // dies muss die eMail-Adresse sein
case cArt=="2"
cArt := " (WEB)"
cUser := cWebLogonID
cPW := cWebLogonPW
cSMTP := cWebSMTP
cFrom := cWebLogonID
cReplyTo := chr(34)+cGmxToHB+chr(34) // eventuell eine andere Rückantwortadresse ?
case cArt=="3"
cArt := " (1und1-Forum)"
cUser := c1und1LogonID
cPW := c1und1LogonPW
cSMTP := c1und1SMTP
cFrom := c1und1LogonID
cReplyTo := chr(34)+c1und1ToHB+chr(34) // eventuell eine andere Rückantwortadresse ?
otherwise
@ 20,1 say "ungültige Auswahl, keine Aktion"
inkey(5)
quit
end
cTo := chr(34)+cGmxToHB+chr(34) // ein Empfänger oder Kommaseparierte Liste
// CC und BCC teste ich hier jetzt nicht.
cSubject := chr(34)+"HB Blat Test über Blat.DLL"+cArt+chr(34) // deutsche Umlaute in OEM ! " == chr(34)
cAttach := chr(34)+"XbaseCMD.PRG"+chr(34)
// variable Parameter auf "" setzen oder um Schlüsselwörter ergänzen
if empty(cReplyTo) // auch NIL
cReplyTo := "" // keine Angabe
else
cReplyTo := " -replyto "+cReplyTo+" "
endif
if empty(cAttach)
cAttach := ""
else
cAttach := " -attach "+cAttach
endif
if empty(cLogFile)
cLogFile := ""
else
cLogFile := " -log "+cLogFile+" -timestamp "
endif
cParameter := cEMailDat+" -subject "+cSubject+" -to "+cTo+ ;
" -server "+cSMTP+" -f "+cFrom+cReplyTo+cAttach+;
" -u "+cUser+" -pw "+cPW+cLogFile
// die DLL braucht auf jeden Fall ANSI ;-)
cParameter := ConvToAnsiCP(cParameter)
memowrit("LOG_DLL_Parameter.TXT",cParameter )
// so würde es funktionieren, aber ich will die Fehlermeldungen trennen.
* nRuck := DllCall(cBlatDLLName, DLL_STDCALL, "Send", cParameter )
nBlatDll := dllLoad(cBlatDLLName)
if nBlatDll > 0
// Aufrufkonvention: DLL_STDCALL oder DLL_CDECL ? Wenn man ot4xb nutzt, muss man dies nicht beachten.
nRuck := DllCall( nBlatDll, DLL_STDCALL , "Send", cParameter ) // *** Send muss genauso geschrieben werden.
endif
do case
case empty(nBlatDll)
@20,1 say "Fehler: dllLOAD() meldet Fehler: "+alltrim(str(DosError()))+" : "+DosErrorMessage()
case nRuck = - 1
@ 20,1 say "Rückgabe von BLAT:"
case nRuck = 0
@ 20,1 say "BLAT meldet 0, alles OK"
otherwise
@ 20,1 say "BLAT meldet "+alltrim(str(nRuck))+", meist eine Fehlermeldung"
end
@22,1 say "Programmende in 10 Sekunden oder Tastendruck"
inkey(10)
return
- Dateianhänge
-
- XbaseDLL.PRG
- (4.16 KiB) 382-mal heruntergeladen
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Ja, in die Falle bin ich gestern auch gelaufen.brandelh hat geschrieben:PS: zunächst hatte ich "send" statt "Send" geschrieben und erhielt einen Fehler, dass die Funktion nicht gefunden wird !
Aber vielen Dank für den ganzen Code. Wie gesagt, morgen Abend werd ich mich mal darüber hermachen, und dann gebe ich Bericht.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Fehler nach Hause melden
Hallo zusammen
ich hab mir einen Fehlerhandler gebaut der den Kunden fragt "Wollen Sie bei Qualitätsverbesserung der Software mithelfen indem Sie die Fehlermeldung senden....." darunter 3 Buttons: Nicht senden, Fehlerbericht anzeigen, Senden.
Die meisten User drücken dann Senden.
Zum Senden verwende ich dann eine FTP-Verbindung zu meinem Server.
Name und Passwort zu diesem FTP-Account sind im Programm hardcodiert.
Gruss
Carlo
ich hab mir einen Fehlerhandler gebaut der den Kunden fragt "Wollen Sie bei Qualitätsverbesserung der Software mithelfen indem Sie die Fehlermeldung senden....." darunter 3 Buttons: Nicht senden, Fehlerbericht anzeigen, Senden.
Die meisten User drücken dann Senden.
Zum Senden verwende ich dann eine FTP-Verbindung zu meinem Server.
Name und Passwort zu diesem FTP-Account sind im Programm hardcodiert.
Gruss
Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- adrian
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Mo, 08. Mai 2006 8:58
- Wohnort: Aadorf TG
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
So, ich gebe nun auch noch meinen "Senf" dazu.
Ich habe dies vor 2 Jahren bereits eingebaut und übertrage mit die xpperror und xppfatal-Datei per FTP.
Dem Dateinamen hänge ich noch die Anzahl Abstürze auf diesem System an und den Kunden-Namen.
adrian
Ich habe dies vor 2 Jahren bereits eingebaut und übertrage mit die xpperror und xppfatal-Datei per FTP.
Dem Dateinamen hänge ich noch die Anzahl Abstürze auf diesem System an und den Kunden-Namen.
adrian
Code: Alles auswählen
IF FILE("XPPERROR.LOG") .OR. FILE("XPPFATAL.LOG")
oFTP := FTPClient():new( "ftp.afra.ch", "Benutzer", "Passwort")
IF oFTP:Connect()
oFtp:setTransferMode(FTP_TRANSFER_TYPE_ASCII)
IF FILE("XPPERROR.LOG")
sZ := MemoRead("XPPERROR.LOG")
oFtp:put( "RTVERROR\ERROR_"+CRYPT(AppIni():GetEntry("LIZENZ", "FIRMA"),"462800")+"_"+AppIni():GetEntry("SUPPORT","XPPERROR","1")+".LOG",sZ)
DeleteFile("XPPERROR.LOG")
AppIni():WriteEntry("SUPPORT", "XPPERROR", AppIni():GetEntry("SUPPORT","XPPERROR","1","N")+1)
ENDIF
IF FILE("XPPFATAL.LOG")
sZ := MemoRead("XPPFATAL.LOG")
oFtp:put( "RTVERROR\FATAL_"+CRYPT(AppIni():GetEntry("LIZENZ", "FIRMA"),"462800")+"_"+AppIni():GetEntry("SUPPORT","XPPFATAL","1") +".LOG",sZ)
DeleteFile("XPPFATAL.LOG")
AppIni():WriteEntry("SUPPORT", "XPPERROR", AppIni():GetEntry("SUPPORT","XPPFATAL","1","N")+1)
ENDIF
oFtp:disconnect()
ENDIF
es Grüessli
Adrian
Adrian
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Adrian,
ich hab mal Deinen Code formatiert, das macht es einfacher zu lesen.
Ich habe das inzwischen mit blat umgesetzt. Es gibt inzwischen auch eine dll-Version davon, das funktioniert absolut reibungslos. Ich habe auch schon Meldungen erhalten, die auf Probleme hinweisen, die schon immer dagewesen sein müssen, die aber nie jemand gemeldet hat. Hat sich also absolut gelohnt.
Ich habe dazu die errorsys so umgeschrieben, das alle Meldungen unverändert in einen String geschrieben werden. Den übergebe ich dann an blat. Sollte der User den Versand ablehnen bzw. keine Inernetverbindung bestehen, dann wird der String als xpperror.log ganz normal gespeichert. Und beim Programmstart wird kontrolliert, ob eine existiert. Wenn ja, Frage an den User, ob die gesendet werden soll. Wenn Ja, wird die nach dem Versand sofort gelöscht.
Den Kundennamen hänge ich übrigens nicht rein. Um guten Gewissens sagen zu können, das keine Benutzerdaten übergeben werden. Ist halt ein sensibles Thema für viele Kunden. Ich überlege aber seit einigen Tagen, ob ich nicht eine zusätzliche Anfrage einbaue, die das optional erlauben würde.
Jan
ich hab mal Deinen Code formatiert, das macht es einfacher zu lesen.
Ich habe das inzwischen mit blat umgesetzt. Es gibt inzwischen auch eine dll-Version davon, das funktioniert absolut reibungslos. Ich habe auch schon Meldungen erhalten, die auf Probleme hinweisen, die schon immer dagewesen sein müssen, die aber nie jemand gemeldet hat. Hat sich also absolut gelohnt.
Ich habe dazu die errorsys so umgeschrieben, das alle Meldungen unverändert in einen String geschrieben werden. Den übergebe ich dann an blat. Sollte der User den Versand ablehnen bzw. keine Inernetverbindung bestehen, dann wird der String als xpperror.log ganz normal gespeichert. Und beim Programmstart wird kontrolliert, ob eine existiert. Wenn ja, Frage an den User, ob die gesendet werden soll. Wenn Ja, wird die nach dem Versand sofort gelöscht.
Den Kundennamen hänge ich übrigens nicht rein. Um guten Gewissens sagen zu können, das keine Benutzerdaten übergeben werden. Ist halt ein sensibles Thema für viele Kunden. Ich überlege aber seit einigen Tagen, ob ich nicht eine zusätzliche Anfrage einbaue, die das optional erlauben würde.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Fehler nach Hause melden
das DLL-Beispiel von Hubert funktioniert wunderbar - vielen Dank dafür
Eigentlich wollte ich es nur kurz testen, aber ich habe es gleich ins Programm eingebaut, um (natürlich nach Rückfrage) im Falle eines Falles die errorlog-datei an mich zu mailen. Bin ich mal gespannt, wie oft ich Post bekomme
Eigentlich wollte ich es nur kurz testen, aber ich habe es gleich ins Programm eingebaut, um (natürlich nach Rückfrage) im Falle eines Falles die errorlog-datei an mich zu mailen. Bin ich mal gespannt, wie oft ich Post bekomme
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hi,
ich habe zu dem DLL Beispiel eine Anmerkung von Pablo gelesen, dass blat selbst nicht thread save wäre,
er hat ein Beispiel das dieses Problem beseitigt. Später werde ich das in die Wissensbasis stellen, hier findet das ja keiner
ich habe zu dem DLL Beispiel eine Anmerkung von Pablo gelesen, dass blat selbst nicht thread save wäre,
er hat ein Beispiel das dieses Problem beseitigt. Später werde ich das in die Wissensbasis stellen, hier findet das ja keiner
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hier ist Pablos Quellcode bei der er den Aufruf der DLL schützt ...
- Dateianhänge
-
- TestBlat.prg
- (2.99 KiB) 333-mal heruntergeladen
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Hi,
wer GMX oder WEB.DE für den Versand nutzt, erhält Meldungen, dass er unverschlüsselt zugreift.
Verschlüsselte Versendung ist aber kein Problem sondern endlich sicher.
Der eMail-Client "BLAT" egal ob EXE oder DLL kann auch per SSL verschlüsselt versenden. Einfach den Port anhängen:
Meine Beispiele sind weiter oben.
wenn ich statt dessen den Port 465 angebe, erhalte ich den Fehler 1:
wer GMX oder WEB.DE für den Versand nutzt, erhält Meldungen, dass er unverschlüsselt zugreift.
Verschlüsselte Versendung ist aber kein Problem sondern endlich sicher.
Der eMail-Client "BLAT" egal ob EXE oder DLL kann auch per SSL verschlüsselt versenden. Einfach den Port anhängen:
Code: Alles auswählen
// dies hat bei mit mit WEB.DE und GMX.DE funktioniert:
if cUseSSL == "J"
cSSL := "-port 587 "
else
cSSL := ""
endif
...
cParameter := cEMailDat+" -subject "+cSubject+" -to "+cTo+" -server "+cSMTP+" -f "+cFrom+cReplyTo+cAttach+" -u "+cUser+" -pw "+cPW+cLogFile + cSSL
wenn ich statt dessen den Port 465 angebe, erhalte ich den Fehler 1:
Code: Alles auswählen
2014.02.06 14:13:41 (Thu)------------Start of Session-----------------
Blat v3.1.2 (build : Dec 27 2013 14:33:12)
32-bit Windows, Full, Unicode
2014.02.06 14:13:47 (Thu): Error: Server refused connection.
2014.02.06 14:13:47 (Thu)-------------End of Session------------------
2014.02.06 14:14:18 (Thu)------------Start of Session-----------------
Blat v3.1.2 (build : Dec 27 2013 14:33:12)
32-bit Windows, Full, Unicode
2014.02.06 14:14:34 (Thu): Error: Connection to server was dropped.
2014.02.06 14:14:34 (Thu): *** Error *** SMTP server error
2014.02.06 14:14:34 (Thu): Error: Not a socket.
2014.02.06 14:14:34 (Thu): Error: Not a socket.
2014.02.06 14:14:34 (Thu)-------------End of Session------------------
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Fehler nach Hause melden
Hallo Hubert,
BLAT selbst kann kein SSL
Du kannst zwar an den Port senden, die Mail kommt auch an. Gesendet wird aber unverschlüsselt.
Um SSL mit Blat zu nutzen verwende ich STunnel
In der STunnel-Konfiguration (ganz unten) sind Beispiele für SSL
Diese anpassen und das ganze funktioniert.
Gruß Stefan
BLAT selbst kann kein SSL
Du kannst zwar an den Port senden, die Mail kommt auch an. Gesendet wird aber unverschlüsselt.
Um SSL mit Blat zu nutzen verwende ich STunnel
In der STunnel-Konfiguration (ganz unten) sind Beispiele für SSL
Diese anpassen und das ganze funktioniert.
Gruß Stefan
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
du meinst, dass nur die Kennwortanmeldung verschlüsselt wird bei 587 ?
Mir reicht das
Mir reicht das
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Fehler nach Hause melden
Dann wird es Dir gehen wie mir.....
Ich bekam permanent Mails dass ich noch nicht auf SSL umgestellt hätte.
Gruß Stefan
Ich bekam permanent Mails dass ich noch nicht auf SSL umgestellt hätte.
Gruß Stefan
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
Ich habe es gerade probiert und erhalte die Meldung, dass meine eMail-Adresse vom Sender nicht akzeptiert wird und zwar auf allen accounts ... aus verschiedenen Gründen.
Ebenso schlägt mein Programm mit der ASINET fehl, dort sind die Fehlermeldungen aber klarer ...
Also war der bisherige Sendeerfolg nur ein verspätetes scharf schalten der neuen Anforderungen.
kannst du das mit dem STunnel nochmal etwas verdeutlichen ?
Ebenso schlägt mein Programm mit der ASINET fehl, dort sind die Fehlermeldungen aber klarer ...
Code: Alles auswählen
LOGWRITER: Info: Socket created successfully
LOGWRITER: Info: Successfully connected to smtp.web.de
LOGWRITER: Info: Server response: 220 web.de (mrweb103) Nemesis ESMTP Service ready
LOGWRITER: Info: Sending: EHLO web.de
LOGWRITER: Info: Server response: 250-web.de Hello web.de [89.204.130.173]
250-SIZE 69920427
250-AUTH LOGIN PLAIN
250 STARTTLS
LOGWRITER: Info: Sending: AUTH PLAIN ............................................................
LOGWRITER: Info: Server response: 235 Authentication succeeded
doMeldeFehler - connected - Versuch: 1
LOGWRITER: Info: Sending: MAIL FROM: <Fehlermeldung_HB_Soft@web.de>
LOGWRITER: Info: Server response: 550-Requested action not taken: mailbox unavailable
550 Insufficient security or privacy level.
LOGWRITER: Error: Unexpected response from server 5
doMeldeFehler - oMail - FEHLER - Versuch: 1
LOGWRITER: Info: Sending: QUIT
kannst du das mit dem STunnel nochmal etwas verdeutlichen ?
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fehler nach Hause melden
so wie es aussieht, kann die ASINET für SMTP kein Port 587 ansteuernund, bei BLAT geht zwar PORT 587, aber danach geht etwas mit der USER Kennung daneben.
Mit einem Testaccount auf einem Web-Server habe ich gegengetestet, das ging.
Mit einem Testaccount auf einem Web-Server habe ich gegengetestet, das ging.
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Fehler nach Hause melden
Mit Blat den Port 25 ansprechen, dieser wird von STunnel abgefangen.
STunnel leitet die Mail dann weiter.
Gruß Stefan
STunnel leitet die Mail dann weiter.
Gruß Stefan