RunShell: Probleme bei Dauerbetrieb?
Moderator: Moderatoren
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
RunShell: Probleme bei Dauerbetrieb?
Hallo allerseits,
hat einer von Euch ein wenig Erfahrung beim Einsatz von RunShell()?
In dem DevCon-Server nutze ich RunShell, um mittels eines Kommandozeilentools (BLAT.EXE) Mails zu versenden - klappt soweit auch ganz gut, bis zu einem gewissen Zeitpunkt!
Ich starte das BLAT asynchron und im Hintergrund (also die letzten beiden RunShell()-Parameter sind .t.) und die Mail wird verschickt. Aber nach einer gewissen Zeit (ich vermute mal, dass sich das an der Anzahl der bereits getätigten Aufrufe festmachen lässt und nicht an der Laufzeit des Dienstes (DevCon-Server)) werden die Mails nicht mehr geschickt -> Dienst stoppen und starten und es geht wieder für eine Weile...
Bevor ich BLAT aufrufe, prüfe ich, ob es das Programm auf meinem Server gibt (ob es also zugreifbar ist) -> wenn nicht, gibt es einen Eintrag im Logfile.
Dieser Eintrag fehlt in dem o.g. Fall, also war die Prüfung erfolgreich!
Und wer jetzt denkt, ich komme gar nicht bis zur Prüfung und das Programm bricht vorher ab, ist schief gewickelt! Direkt vor der Prüfung wird die zu mailende Datei geschrieben und die ist da!
BLAT selber rufe ich mit dem Parameter -log auf, so dass alle Ausgaben des Befehls in eine Logdatei geschrieben werden - diese Logdatei wird dann jedoch nicht geschrieben, also hat der Aufruf nicht geklappt!
Nur leider kann man das ja nicht abfragen, da ich das ganze Asynchron aufrufe (der Server soll ja nicht warten, bis die Mail gesendet wurde...)
Hat irgendjemand eine Idee, woran das Verhalten liegen kann? Wird die Shell vielleicht nicht beendet und sind deshalb nur eine bestimmte Anzahl Aufrufe drin?
Viele Grüße,
Martin
hat einer von Euch ein wenig Erfahrung beim Einsatz von RunShell()?
In dem DevCon-Server nutze ich RunShell, um mittels eines Kommandozeilentools (BLAT.EXE) Mails zu versenden - klappt soweit auch ganz gut, bis zu einem gewissen Zeitpunkt!
Ich starte das BLAT asynchron und im Hintergrund (also die letzten beiden RunShell()-Parameter sind .t.) und die Mail wird verschickt. Aber nach einer gewissen Zeit (ich vermute mal, dass sich das an der Anzahl der bereits getätigten Aufrufe festmachen lässt und nicht an der Laufzeit des Dienstes (DevCon-Server)) werden die Mails nicht mehr geschickt -> Dienst stoppen und starten und es geht wieder für eine Weile...
Bevor ich BLAT aufrufe, prüfe ich, ob es das Programm auf meinem Server gibt (ob es also zugreifbar ist) -> wenn nicht, gibt es einen Eintrag im Logfile.
Dieser Eintrag fehlt in dem o.g. Fall, also war die Prüfung erfolgreich!
Und wer jetzt denkt, ich komme gar nicht bis zur Prüfung und das Programm bricht vorher ab, ist schief gewickelt! Direkt vor der Prüfung wird die zu mailende Datei geschrieben und die ist da!
BLAT selber rufe ich mit dem Parameter -log auf, so dass alle Ausgaben des Befehls in eine Logdatei geschrieben werden - diese Logdatei wird dann jedoch nicht geschrieben, also hat der Aufruf nicht geklappt!
Nur leider kann man das ja nicht abfragen, da ich das ganze Asynchron aufrufe (der Server soll ja nicht warten, bis die Mail gesendet wurde...)
Hat irgendjemand eine Idee, woran das Verhalten liegen kann? Wird die Shell vielleicht nicht beendet und sind deshalb nur eine bestimmte Anzahl Aufrufe drin?
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.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hallo Martin,
ich arbeite auch mit runshell. allerdings habe ich ein Main-prgramm bei denen über Menüsteuerung die entsprechenden einzelnen exe-Files gestartet werden. Hierbei habe ich den 3.Wert bei Runshell sprich lAsync auf .t. gesetzt . d.h. meine exe-Datei wird nicht angehalten.
lBackground habe ich nicht drin enthalten. also standardwert .f.
Ist vielleicht der Dateianhang der email so groß, daß es etwa dauert ?
oder setze mal lAsync auch auf .t.
ich arbeite auch mit runshell. allerdings habe ich ein Main-prgramm bei denen über Menüsteuerung die entsprechenden einzelnen exe-Files gestartet werden. Hierbei habe ich den 3.Wert bei Runshell sprich lAsync auf .t. gesetzt . d.h. meine exe-Datei wird nicht angehalten.
lBackground habe ich nicht drin enthalten. also standardwert .f.
Ist vielleicht der Dateianhang der email so groß, daß es etwa dauert ?
oder setze mal lAsync auch auf .t.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Rolf,
die Mail selber ist sehr klein und sie kommt gar nicht an! Nicht nur Minuten später, sondern gar nicht - den ganzen Tag lang nicht mehr, bis ich den Dienst neu starte.
Und wie gesagt, es läuft bereits asynchron...
Viele Grüße,
Martin
die Mail selber ist sehr klein und sie kommt gar nicht an! Nicht nur Minuten später, sondern gar nicht - den ganzen Tag lang nicht mehr, bis ich den Dienst neu starte.
Und wie gesagt, es läuft bereits asynchron...
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.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo allerseits,
ich bin mir ziemlich sicher, dass das Problem am RunShell liegt - habe nämlich auch an anderer Stelle noch Aufrufe drin - z.B. um Dateien zu verschieben (auch dort hat der liebe Tom dann schon mal Probleme gehabt...) - und in diesem Fall auch synchron!
Das geht mit Xbase++-eigenen Mitteln ja leider nicht (Wichtig: Zeitstempel der zu verschiebenden Datei muss unverändert bleiben!!!)
@Günter (oder wer es sonst noch weiß): Was kann ich denn für einen APICall nehmen, um das folgende Kommando entsprechend abzulösen:
Viele Grüße,
Martin
ich bin mir ziemlich sicher, dass das Problem am RunShell liegt - habe nämlich auch an anderer Stelle noch Aufrufe drin - z.B. um Dateien zu verschieben (auch dort hat der liebe Tom dann schon mal Probleme gehabt...) - und in diesem Fall auch synchron!
Das geht mit Xbase++-eigenen Mitteln ja leider nicht (Wichtig: Zeitstempel der zu verschiebenden Datei muss unverändert bleiben!!!)
@Günter (oder wer es sonst noch weiß): Was kann ich denn für einen APICall nehmen, um das folgende Kommando entsprechend abzulösen:
Code: Alles auswählen
RunShell( '/C move /Y ' + mempfad + '\' + recnum + '.MEM ' + rempfad,,.f.,.t. )
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.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
gruss by OHR
Jimmy
Martin Altmann hat geschrieben: Das geht mit Xbase++-eigenen Mitteln ja leider nicht (Wichtig: Zeitstempel der zu verschiebenden Datei muss unverändert bleiben!!!)
Code: Alles auswählen
FUNCTION GetFileTime(cFile)
LOCAL cCreation := SPACE(8), cAccess := SPACE(8), cWrite := SPACE(8)
LOCAL nKernel32Dll:=DllLoad("Kernel32.dll")
LOCAL nH := FOPEN(cFile, FO_READ+FO_SHARED )
LOCAL aTime := {}
If nKernel32Dll > 0 .AND. nH # -1
IF DllCall(nKernel32Dll, DLL_STDCALL, 'GetFileTime', nH, @cCreation, @cAccess, @cWrite) # 0
AADD( aTime, cCreation )
AADD( aTime, cAccess )
AADD( aTime, cWrite )
ENDIF
DllUnload(nKernel32Dll)
EndIf
IF nH # -1
FCLOSE(nH)
ENDIF
Return aTime
FUNCTION SetFileTime(cFile, aTime)
LOCAL cCreation := aTime[1], cAccess := aTime[3], cWrite := aTime[3]
LOCAL nKernel32Dll:=DllLoad("Kernel32.dll")
LOCAL nH := FOPEN(cFile, FO_WRITE+FO_SHARED )
If nKernel32Dll > 0 .AND. nH # -1
DllCall(nKernel32Dll, DLL_STDCALL, 'SetFileTime', nH, @cCreation, @cAccess, @cWrite)
DllUnload(nKernel32Dll)
EndIf
IF nH # -1
FCLOSE(nH)
ENDIF
RETURN NIL
wie ist es den mit der SHFile Class ? damit kannst du doch auch "move"nMartin Altmann hat geschrieben: @Günter (oder wer es sonst noch weiß): Was kann ich denn für einen APICall nehmen, um das folgende Kommando entsprechend abzulösen:Code: Alles auswählen
RunShell( '/C move /Y ' + mempfad + '\' + recnum + '.MEM ' + rempfad,,.f.,.t. )
gruss by OHR
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jimmy,
danke für Deinen Code!
Was für eine SHFile-Klasse meinst Du? Die gibt es nciht, sicherlich ein Tippfehler von Dir?
Viele Grüße,
Martin
danke für Deinen Code!
Was für eine SHFile-Klasse meinst Du? Die gibt es nciht, sicherlich ein Tippfehler von Dir?
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.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
Jimmy
p.s. mir fällt gerade ein das ich meinen MAPI Client (OE) per Thread
aufrufen musste weil ich sonst Probleme hatte. Schon mal versucht BLAT
auch per Thread aufzurufen ?
nope, die ist von Phil aus dem FolderBrow.ZIPMartin Altmann hat geschrieben: Was für eine SHFile-Klasse meinst Du? Die gibt es nciht, sicherlich ein Tippfehler von Dir?
gruss by OHR/*
SHFile Class testprogram, see below for Class documentation
The complete class is freeware.
SHFile-Class
What it does :
Provides a wrapper for the SHFileOperation-API function
Which methods are avalaible for the "public" :
Well, they do just what their names are telling !
For further explanations see the header of each method
Copy
Move
Rename
Delete
SHFile needs the BAP-Library from Alaska to work correctly, so
be sure that you provide the BAP.DLL with your programs.
*/
Jimmy
p.s. mir fällt gerade ein das ich meinen MAPI Client (OE) per Thread
aufrufen musste weil ich sonst Probleme hatte. Schon mal versucht BLAT
auch per Thread aufzurufen ?
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jimmy,
habe ich bisher nicht versucht - wie äußerten sich denn die Probleme bei Dir?
Bin gerade dabei, das Mailversenden auf Asinet umzustellen! Jedoch hat die Implementation von Alaska (:AddRecipient()) einen Bug, die dafür sorgt, dass ich die Mails hunderttausendfach bekomme... Ist nervig!
Wenn man nämlich die Methode mehrmals aufruft, weil man mehrere Empfänger angeben will, so wird vor jeder weitere Adresse ein "," eingefügt! Also steht in der To-Zeile dann: "Mail1;,Mail2" ist natürlich Unsinn! Dadurch versucht der Mailserver die Zustellung diverse Male (mehrere Dutzend mal), bevor er entnervt aufgibt...
Werde mal versuchen, die Adressen mittels der Methode :addHeader( "To", ... ) hinzuzufügen!
Viele Grüße,
Martin
habe ich bisher nicht versucht - wie äußerten sich denn die Probleme bei Dir?
Bin gerade dabei, das Mailversenden auf Asinet umzustellen! Jedoch hat die Implementation von Alaska (:AddRecipient()) einen Bug, die dafür sorgt, dass ich die Mails hunderttausendfach bekomme... Ist nervig!
Wenn man nämlich die Methode mehrmals aufruft, weil man mehrere Empfänger angeben will, so wird vor jeder weitere Adresse ein "," eingefügt! Also steht in der To-Zeile dann: "Mail1;,Mail2" ist natürlich Unsinn! Dadurch versucht der Mailserver die Zustellung diverse Male (mehrere Dutzend mal), bevor er entnervt aufgibt...
Werde mal versuchen, die Adressen mittels der Methode :addHeader( "To", ... ) hinzuzufügen!
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.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
hatte ... müsste es mal rausnehmen um zu sehen was dann passiert.
Auf jeden Fall waren das irgend welche "hänger" die dann passierten.
war auch nur eine Idee per Thread was zu machen.
gruss by OHR
Jimmy
hm ... irgendwas war da wenn man SOCMapi nicht per Thread gestartetMartin Altmann hat geschrieben: habe ich bisher nicht versucht - wie äußerten sich denn die Probleme bei Dir?
hatte ... müsste es mal rausnehmen um zu sehen was dann passiert.
Auf jeden Fall waren das irgend welche "hänger" die dann passierten.
war auch nur eine Idee per Thread was zu machen.
gruss by OHR
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo allerseits,
Ist hier vielleicht einer, der Asinet zum Mailversand nutzt und diese Probleme nicht hat???
Viele Grüße,
Martin
hat leider den selben Effekt - zum k*tzen!!Martin Altmann hat geschrieben:Jedoch hat die Implementation von Alaska (:AddRecipient()) einen Bug, die dafür sorgt, dass ich die Mails hunderttausendfach bekomme... Ist nervig!
Wenn man nämlich die Methode mehrmals aufruft, weil man mehrere Empfänger angeben will, so wird vor jeder weitere Adresse ein "," eingefügt! Also steht in der To-Zeile dann: "Mail1;,Mail2" ist natürlich Unsinn! Dadurch versucht der Mailserver die Zustellung diverse Male (mehrere Dutzend mal), bevor er entnervt aufgibt...
Werde mal versuchen, die Adressen mittels der Methode :addHeader( "To", ... ) hinzuzufügen!
Ist hier vielleicht einer, der Asinet zum Mailversand nutzt und diese Probleme nicht hat???
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.
- Muecke
- 1000 working lines a day
- Beiträge: 623
- Registriert: Di, 24. Okt 2006 7:19
- Wohnort: Samstagern CH
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 9 Mal
- Kontaktdaten:
Hallo Martin,
Ich mach dies mit Asinet
Was ich leider noch nicht kann sind Bilder zu empfangen, momentan nur Text. Weiss noch nicht wie ich dies abfangen soll oder kann.
Senden ist kein Problem von Bilder,Text ,Worddateien .....
Gruss Thomas
Ich mach dies mit Asinet
Code: Alles auswählen
IF SendOutMail( cMailServer, ; // name of mail server (defaultsto "mail")
cFromAdr, ; // mail address of sender
cToMailAdr , ; // recipient ( "ac" means: stringor array of strings )
cBetreff, ; // subject line
cBody , ; // message body
, ; // CC: recipients
, ; // BCC: recipients
aAttachFilNames,; // name(s) of attached file(s)
cLogFile ) // log file name
else
......................................
Code: Alles auswählen
#include "EMail.ch"
#pragma library( "ASINet10.lib" )
FUNCTION SendOutMail( cMailServer , ; // name of mail server (defaults to "mail")
cFromAddr , ; // mail address of sender
acToAddr , ; // recipient ( "ac" means: string or array of strings )
cSubject , ; // subject line
cMessage , ; // message body
acCCAddr , ; // CC: recipients
acBCCAddr , ; // BCC: recipients
acAttachFile, ; // name(s) of attached file(s)
cLogFile ; // log file name
) // Return --> .T. or .F. on error
LOCAL oMimeMsg
LOCAL oSmtpClient
LOCAL oLog := LogWriter():new( cLogFile )
/*
* parameter checking
*/
IF Valtype( cMailServer ) <> "C"
cMailServer := "mail"
ENDIF
IF Valtype( cFromAddr ) <> "C"
oLog:logError( ERR_MSG_SENDER )
ENDIF
IF Valtype( cSubject ) <> "C"
oLog:logError( ERR_MSG_SUBJECT )
ENDIF
IF Valtype( cMessage ) <> "C"
oLog:logError( ERR_MSG_MESSAGE )
ENDIF
IF ! ( ( Valtype( acToAddr ) == "A" .AND. ;
AScan( acToAddr, {|x| Valtype(x) <> "C" } ) == 0 ) .OR. ;
Valtype( acToAddr ) == "C" )
oLog:logError( ERR_MSG_RECIPIENT )
ENDIF
IF ! ( ( Valtype( acCCAddr ) == "A" .AND. ;
AScan( acCCAddr, {|x| Valtype(x) <> "C" } ) == 0 ) .OR. ;
Valtype( acCCAddr ) == "C" ) .AND. ;
acCCAddr <> NIL
oLog:logError( ERR_MSG_CCHEADER )
ENDIF
IF ! ( ( Valtype( acBCCAddr ) == "A" .AND. ;
AScan( acBCCAddr, {|x| Valtype(x) <> "C" } ) == 0 ) .OR. ;
Valtype( acBCCAddr ) == "C" ) .AND. ;
acBCCAddr <> NIL
oLog:logError( ERR_MSG_BCCHEADER )
ENDIF
IF ! ( ( Valtype( acAttachFile ) == "A" .AND. ;
AScan( acAttachFile, {|x| Valtype(x) <> "C" .OR. .NOT. FExists(x) } ) == 0 ) .OR. ;
Valtype( acAttachFile ) == "C" ) .AND. ;
acAttachFile <> NIL
oLog:logError( ERR_MSG_ATTACHMENT )
ENDIF
IF oLog:isError()
IF Valtype( cLogFile ) == "C"
oLog:writeLogFile()
ENDIF
RETURN .F.
ENDIF
/*
* We're using arrays of strings
*/
IF Valtype( acToAddr ) == "C"
acToAddr := { acToAddr }
ENDIF
IF Valtype( acCCAddr ) == "C"
acCCAddr := { acCCAddr }
ENDIF
IF Valtype( acBCCAddr ) == "C"
acBCCAddr := { acBCCAddr }
ENDIF
IF Valtype( acAttachFile ) == "C"
acAttachFile := { acAttachFile }
ENDIF
/*
* create a new mime message object and compose e-mail
*/
oMimeMsg := MimeMessage():new()
/*
* add sender and recipient(s)
*/
oMimeMsg:setFrom( MailAddress():new( cFromAddr ) )
AEval( acToAddr, {|cTo| oMimeMsg:addRecipient( MailAddress():new(cTo) ) } )
/*
* add subject line and message body
*/
oMimeMsg:setSubject( cSubject )
oMimeMsg:setMessage( cMessage )
/*
* add CC headers and BCC headers
*/
IF Valtype( acCCAddr ) == "A"
AEval( acCCAddr, {|cCC| oMimeMsg:addHeader( "CC", cCC ) } )
ENDIF
IF Valtype( acBCCAddr ) == "A"
AEval( acBCCAddr, {|cBCC| oMimeMsg:addHeader( "BCC", cBCC ) } )
ENDIF
/*
* add file attachments
*/
IF Valtype( acAttachFile ) == "A"
AEval( acAttachFile, {|cFile| oMimeMsg:attachFile( cFile ) } )
ENDIF
/*
* create an SMTP client object and log full information (=2)
*/
oSmtpClient := SMTPClient():new( cMailServer,,, oLog, 2 )
/*
* connect to SMTP server and send message
*/
IF .NOT. oSmtpClient:connect()
oLog:logError( ERR_MSG_CONNECTION )
ELSE
IF .NOT. oSmtpClient:send( oMimeMsg )
oLog:logError( ERR_MSG_TRANSMISSION )
ENDIF
/*
* disconnect from server
*/
oSmtpClient:disconnect()
ENDIF
IF .NOT. oLog:isError()
oLog:write( ERR_MSG_NOERROR )
ENDIF
IF Valtype( cLogFile ) == "C"
oLog:writeLogFile()
ENDIF
RETURN ( .NOT. oLog:isError() )
Senden ist kein Problem von Bilder,Text ,Worddateien .....
Gruss Thomas
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Thomas,
vielen Dank - ist im Prinzip ja das Demoprogramm von Alaska. Habe ich auch so versucht!
Aber sobald ich mehr als einen Empfänger habe (also zwei bei To oder zwei bei CC), klappt es nicht vernünftig! Wenn man sich die Mailheader in Rohform anschaut (also nicht die, die man standardmässig in Outlook angezeigt bekommt, sondern wenn man bei geöffneter Mail in Ansicht-Optionen geht), dann sieht man den Fehler:
Und das ist dann die Fehlermail (Auszug), die man nach etlichen Zustellversuchen bekommt:
Viele Grüße,
Martin
vielen Dank - ist im Prinzip ja das Demoprogramm von Alaska. Habe ich auch so versucht!
Aber sobald ich mehr als einen Empfänger habe (also zwei bei To oder zwei bei CC), klappt es nicht vernünftig! Wenn man sich die Mailheader in Rohform anschaut (also nicht die, die man standardmässig in Outlook angezeigt bekommt, sondern wenn man bei geöffneter Mail in Ansicht-Optionen geht), dann sieht man den Fehler:
Wenn man also mehrere Empfänger hinzufügt, dann wird dazwischen noch ein "," gesetzt Blödsinn!To: ........@.....de;, ....@......de;
Und das ist dann die Fehlermail (Auszug), die man nach etlichen Zustellversuchen bekommt:
Problem dabei: Es wird immer wieder versucht, zuzustellen - und jedesmal gelingt es zur Hälfte - die erste der beiden Mailadressen bekommt also immer die Mail bei jedem Versuch!!!!Hi. This is the qmail-send program at maildo.versatel.de.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<....@.....>:
qmail-inject: fatal: unable to parse this line:
To: .....@.......de;, .....@......de;
I'm not going to try again; this message has been in the queue too long.
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.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Günter,
ich bin der Meinung, ja! Aber ich bin mir nicht mehr sicher - werde es morgen mal versuchen (könnte sein, dass dabei der Zeitstempel geändert wurde...).
BTW, willst Du denn diesmal gar nicht zur DevCon kommen? Wäre schade!!
Viele Grüße,
Martin
ich bin der Meinung, ja! Aber ich bin mir nicht mehr sicher - werde es morgen mal versuchen (könnte sein, dass dabei der Zeitstempel geändert wurde...).
BTW, willst Du denn diesmal gar nicht zur DevCon kommen? Wäre schade!!
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.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Günter,
sehr schade!! Hoffentlich verschiebt sich dieser noch
Übrigens: FRename geht, was den Zeitstempel anbelangt (dieser bleibt erhalten)! Aber ich hatte das damals nicht genommen, weil er knallt, wenn die Zieldatei bereits existiert! Das umgehe ich jetzt aber, indem ich dies vorher prüfe und sie ggf. lösche!
Vielen Dank und viele Grüße,
Martin
sehr schade!! Hoffentlich verschiebt sich dieser noch
Übrigens: FRename geht, was den Zeitstempel anbelangt (dieser bleibt erhalten)! Aber ich hatte das damals nicht genommen, weil er knallt, wenn die Zieldatei bereits existiert! Das umgehe ich jetzt aber, indem ich dies vorher prüfe und sie ggf. lösche!
Vielen Dank und 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.
-
- Rekursionen-Architekt
- Beiträge: 194
- Registriert: Fr, 24. Feb 2006 8:09
- Kontaktdaten:
Hallo Martin,Martin Altmann hat geschrieben:Problem dabei: Es wird immer wieder versucht, zuzustellen - und jedesmal gelingt es zur Hälfte - die erste der beiden Mailadressen bekommt also immer die Mail bei jedem Versuch!!!!
ich selbst habe bisher noch keine Mails mit (oder sagt man aus?) XBase verschickt.
Aber was spricht dagegen wenn du zwei Mails hintereinander abschickst? Eine an die Mailadresse1 und die zweite dann an die Mailadresse2.
Gut, der erste Empfänger wird es in seiner Mail nicht sehen können wer diese sonst noch bekommen hat. Welche technischen Unterschiede (Versenden einer Mail an Mehrere Empfänger gegenüber Mehrerer Mails an jeweils einen Empfänger) es gibt weis ich leider nicht.
Währe ja eine "suboptimale" Lösung.
Aber ich vermute solche hast du ja bereits
Gruß,
Notloesung
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Thomas,
ich übergebe sie wie folgt:
Im Header der Mail steht das dann wie o. gepostet:
So sollte es eigentlich auch bei Deinen Mails stehen!
Das Du damit keine Probleme hast, liegt dann wahrscheinlich an Deinem SMTP-Server, der das ignoriert.
Meiner tut es nicht.
Hallo Jarek,
so ähnlich. Ich schicke die Mail jetzt an die eine Adresse im To und an die andere im CC.
Viele Grüße,
Martin
ich übergebe sie wie folgt:
Code: Alles auswählen
oMail:addRecipient( MailAddress():new( "m....@v....de" ) )
oMail:addRecipient( MailAddress():new( "i...@x....de" ) )
Code: Alles auswählen
To: m....@v....de;, i...@x....de;
Das Du damit keine Probleme hast, liegt dann wahrscheinlich an Deinem SMTP-Server, der das ignoriert.
Meiner tut es nicht.
Hallo Jarek,
so ähnlich. Ich schicke die Mail jetzt an die eine Adresse im To und an die andere im CC.
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.
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Hallo Martin,
ich versende auch EMails mit ASINET, habe aber aus dem Alaska-Beispiel die SendIT- und SendMail-Funktion genommen und hatte bis jetzt keine Probleme. Die Email-Adressen füge ich selbst zu einem String
Bei der SendMail-Funktion habe ich die Zeile
angepasst:
, um den richtigen Server im Header der EMail zu haben.
ich versende auch EMails mit ASINET, habe aber aus dem Alaska-Beispiel die SendIT- und SendMail-Funktion genommen und hatte bis jetzt keine Probleme. Die Email-Adressen füge ich selbst zu einem String
zusammen und übergebe an die Funktion.
Bei der SendMail-Funktion habe ich die Zeile
Code: Alles auswählen
oSmtpClient := SMTPClient():new( cMailServer,,, oLog, 2 )
Code: Alles auswählen
#DEFINE CFROMHOST "mail.xxx.de"
oSmtpClient := SMTPClient():new( cMailServer,,CFROMHOST, oLog, 2 )
Zuletzt geändert von andreas am Fr, 01. Jun 2007 8:35, insgesamt 1-mal geändert.
- Muecke
- 1000 working lines a day
- Beiträge: 623
- Registriert: Di, 24. Okt 2006 7:19
- Wohnort: Samstagern CH
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 9 Mal
- Kontaktdaten:
Hallo Martin,
sollte keine Rolle spielen welcher Server ich habe. Ich hab dies auf 2 verschiede ausgeführt und keine Probleme damit gehabt.
Nimm doch einfach mal 4 Adressen und das Beispiel von Asinet.
Adressen erfassen und senden und dann sollte es doch gehen.
Was ich nicht rausfinde, wie ich Worddateien oder Bilder empfangen kann.
Gruss Thomas
sollte keine Rolle spielen welcher Server ich habe. Ich hab dies auf 2 verschiede ausgeführt und keine Probleme damit gehabt.
Nimm doch einfach mal 4 Adressen und das Beispiel von Asinet.
Adressen erfassen und senden und dann sollte es doch gehen.
Code: Alles auswählen
cToMailAdr := "info@.....;gut@......"
Gruss Thomas
- Muecke
- 1000 working lines a day
- Beiträge: 623
- Registriert: Di, 24. Okt 2006 7:19
- Wohnort: Samstagern CH
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 9 Mal
- Kontaktdaten:
Hallo Andreas,
Bin mal wieder zu langsam gewesen.
kannst Du mir vielleicht helfen mit empfangen von Bilder und Worddateien.
Ich kann nur Text empfangen.
Grusss Thomas
Bin mal wieder zu langsam gewesen.
kannst Du mir vielleicht helfen mit empfangen von Bilder und Worddateien.
Ich kann nur Text empfangen.
Grusss Thomas
Zuletzt geändert von Muecke am Fr, 01. Jun 2007 8:41, insgesamt 1-mal geändert.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Andreas,
habe ich auch versucht!
Hat den selben Effekt: Im To-Header steht dann:
Ich kann mir nur schwer vorstellen, dass bei Euch was anderes stehen sollte!
Meine Asinetversion habe ich mir vor kurzem erst heruntergeladen (1.9).
Die .DLL-Dateien haben das Datum:
27.04.2006 (AsiNet1c.dll und AsiUtl10.dll)
01.06.2006 (AsiNet10.dll)
Viele Grüße,
Martin
habe ich auch versucht!
Code: Alles auswählen
:oMail:AddHeader( "To", "xxx@xxx.de;yyy@xxx.de" )
Code: Alles auswählen
To xxx@xxx.de;,yyy@xxx.de;
Meine Asinetversion habe ich mir vor kurzem erst heruntergeladen (1.9).
Die .DLL-Dateien haben das Datum:
27.04.2006 (AsiNet1c.dll und AsiUtl10.dll)
01.06.2006 (AsiNet10.dll)
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.
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Hallo
Bin mir nicht sicher, aber ich meine MOVE überschreibt auch keine bestehenden Dateien
Das AsiNet Problem habe ich auch nicht.
Allerdings habe ich jetzt keinen Zugriff auf meinen Quellcode.
Ich kann ihn heute Abend aber gerne posten.
ich nehme dafür immer RENAME. Natürlich muss man dann zuerst die Ursprungsdateien mit directory() suchen und im Ziel bestehende löschen (oder Abfrage ?) bevor man RENAME aufruft. FRename() habe ich bisher noch gar nicht gekannt, ist aber auf jeden Fall eleganter.um Dateien zu verschieben ... Das geht mit Xbase++-eigenen Mitteln ja leider nicht
Bin mir nicht sicher, aber ich meine MOVE überschreibt auch keine bestehenden Dateien
Das AsiNet Problem habe ich auch nicht.
Allerdings habe ich jetzt keinen Zugriff auf meinen Quellcode.
Ich kann ihn heute Abend aber gerne posten.
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
ich bin mir ziemlich sicher, dass move das Ziel überschreibt.
Was Eure AsiNet-Anmerkungen anbelangt:
Ich rede hier nicht von dem kurzen Header, der in Outlook angezeigt wird! Dort sieht er auch bei mir richtig aus!
Entscheidend ist der "echte" Headereintrag!!! Und der ist falsch!
Das sieht man in Outlook nur, wenn man die Mail per Doppelklick im eigenen Fenster öffnet und dann Ansicht-Optionen auswählt. Dort werden die Internet-Header in einer Listbox angezeigt. Diese einfach von unten nach oben scrollen, bis man den To-Eintrag findet...
Viele Grüße,
Martin
ich bin mir ziemlich sicher, dass move das Ziel überschreibt.
Was Eure AsiNet-Anmerkungen anbelangt:
Ich rede hier nicht von dem kurzen Header, der in Outlook angezeigt wird! Dort sieht er auch bei mir richtig aus!
Entscheidend ist der "echte" Headereintrag!!! Und der ist falsch!
Das sieht man in Outlook nur, wenn man die Mail per Doppelklick im eigenen Fenster öffnet und dann Ansicht-Optionen auswählt. Dort werden die Internet-Header in einer Listbox angezeigt. Diese einfach von unten nach oben scrollen, bis man den To-Eintrag findet...
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.