Fehler nach Hause melden

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Martin Altmann »

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
:grommit:
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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

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:

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" )
Und nix passiert. Was ist da falsch dran? Der Rückgabewert ist übrigens 1.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Martin Altmann »

Hmm - mein Aufruf damals (ältere Version) war so:

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. )
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
:grommit:
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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Martin Altmann »

Keine Ahnung - habe damals das Commandlinetool verwendet.
Aber bei mir hieß der Parameter -server und nicht -serverSMTP

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Fehler nach Hause melden

Beitrag von brandelh »

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 : :arrow: http://www.blat.net/examples/blat_return_codes.htm

1 hat mehrere Bedeutungen, nur 0 ist OK !
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
PS: das ist alles sehr interessant insbesondere die DLL Version !
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

Moin Hubert,

da werde ich morgen noch mal die einzelnen Parameter durchgehen. Irgendwo ist da der Wurm drin :x .

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Fehler nach Hause melden

Beitrag von brandelh »

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.

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 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 RunShell"+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

   // 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 Rckgabewert 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 "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

die Anmeldedaten muss jeder von sich holen, Server Adressen sind beim jeweiligen Anbieter hinterlegt.
Diese kenne ich:

Code: Alles auswählen

#define cGmxSMTP    'mail.gmx.de'
#define cWebSMTP    'smtp.web.de'
#define c1und1SMTP  'smtp.1und1.de'
Nun versuche ich diese auf DLL umzustellen.

Aufrufzeile, Anmeldedaten mit ... ersetzt:
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
und so sieht das BLAT Protokoll aus:
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 ... [-X
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) 347-mal heruntergeladen
Gruß
Hubert
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: Fehler nach Hause melden

Beitrag von brandelh »

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 ...

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
PS: zunächst hatte ich "send" statt "Send" geschrieben und erhielt einen Fehler, dass die Funktion nicht gefunden wird !
Dateianhänge
XbaseDLL.PRG
(4.16 KiB) 380-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

brandelh hat geschrieben:PS: zunächst hatte ich "send" statt "Send" geschrieben und erhielt einen Fehler, dass die Funktion nicht gefunden wird !
Ja, in die Falle bin ich gestern auch gelaufen.

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.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler nach Hause melden

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
adrian
Rekursionen-Architekt
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

Beitrag von adrian »

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

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
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fehler nach Hause melden

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Fehler nach Hause melden

Beitrag von peternmb »

das DLL-Beispiel von Hubert funktioniert wunderbar - vielen Dank dafür :happy7:

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 :lol:
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: Fehler nach Hause melden

Beitrag von brandelh »

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 ;-)
Gruß
Hubert
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: Fehler nach Hause melden

Beitrag von brandelh »

Hier ist Pablos Quellcode bei der er den Aufruf der DLL schützt ...
Dateianhänge
TestBlat.prg
(2.99 KiB) 331-mal heruntergeladen
Gruß
Hubert
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: Fehler nach Hause melden

Beitrag von brandelh »

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:

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
Meine Beispiele sind weiter oben.

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
Benutzeravatar
mini990
1000 working lines a day
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

Beitrag von mini990 »

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
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: Fehler nach Hause melden

Beitrag von brandelh »

du meinst, dass nur die Kennwortanmeldung verschlüsselt wird bei 587 ?

Mir reicht das ;-)
Gruß
Hubert
Benutzeravatar
mini990
1000 working lines a day
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

Beitrag von mini990 »

Dann wird es Dir gehen wie mir.....
Ich bekam permanent Mails dass ich noch nicht auf SSL umgestellt hätte.

Gruß Stefan
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: Fehler nach Hause melden

Beitrag von brandelh »

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 ...

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
Also war der bisherige Sendeerfolg nur ein verspätetes scharf schalten der neuen Anforderungen.

kannst du das mit dem STunnel nochmal etwas verdeutlichen ?
Gruß
Hubert
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: Fehler nach Hause melden

Beitrag von brandelh »

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.
Gruß
Hubert
Benutzeravatar
mini990
1000 working lines a day
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

Beitrag von mini990 »

Mit Blat den Port 25 ansprechen, dieser wird von STunnel abgefangen.
STunnel leitet die Mail dann weiter.

Gruß Stefan
Antworten