Das Notes Forum
Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: Gero am 18.08.04 - 10:31:34
-
Hallo,
folgendes kann ich nicht verstehen, suche Erklärbär:
In einer Mailin DB läuft ein Agent nach eingang neuer Mail.
Er erstellt nur eine Textdatei aus dem Body und fügt dem Dokument das Feld
"processed" hinzu, damit es aus der Ansicht verschwindet.
Die Mails kommen von nicht-Notes Systemen. Vor dem Agent sind ö und ü lesbar,
nacher sind sie durch Fragezeichen ersetzt, aber nur wenn der Agent nach neuer
Mail läuft. Lasse ich den selben Agenten von Hand laufen, bleiben die Umlaute erhalten. Es ist doch 2 mal der gleiche Agent, doch ich kann die selbe Mail immer
wieder in die Datenbank kopieren und erhalte immer 2 verschiedene Eregebnisse.
Oueue abarbeiten/Local ruft ProcessDocuments manuell auf:
Sub ProcessDocuments
Dim session As New NotesSession
Dim db As NotesDatabase
Dim v As notesview
Dim search As String
Dim d As Notesdocument
Dim i As Notesitem
Dim dateTime As New NotesDateTime("12/01/94")
Dim rtitem As Variant
Dim content As Variant, contents As String
On Error Goto fehler
Set db = session.CurrentDatabase
Set v = db.GetView("Queue")
If session.currentagent.servername = "CN=XYZNT01/O=FIRMA" Then
Path = "/EDINOTES/IN/"
Else
Path = "W:/EDINOTES/IN/"
End If
Fname = "F" & Format(Now,"yyyymmddhhmmss")
File = path & fname
x=0
Set d = v.GetFirstDocument
While Not (d Is Nothing)
If d.HasEmbedded Then
If d.HasItem("Body") Then
Set rtitem = d.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
If rtitem.EmbeddedObjects <> "" Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
x=x+1
Call o.ExtractFile( file & "_" & Cstr(x) & ".TXT" )
RetCod=InfoSys1 (fname & "_" & Cstr(x) & ".TXT") End If
End Forall
Else
contents = Rtitem.Text
x=x+1
FN=1
Open file & "_" & Cstr(x) & ".TXT" For Output As FN
Print # FN,contents
Close FN
RetCod=InfoSys1 (fname & "_" & Cstr(x) & ".TXT")
End If
End If
Else
' no body field - no data
End If
Else
If d.hasitem("Body") Then
Set rtitem = d.GetFirstItem( "Body" )
contents = Rtitem.Text
x=x+1
FN=1
Open file & "_" & Cstr(x) & ".TXT" For Output As FN
Print # FN,contents
Close FN
RetCod=InfoSys1 (fname & "_" & Cstr(x) & ".TXT")
End If
End If
Set i = D.ReplaceItemValue( "Processed", Format(Now(), "General Date") )
Call d.Save( True, False )
Call v.refresh
Set d = v.GetFirstDocument
Wend
Ende:
Exit Sub
Fehler:
If logopened Then
Call aLog ( "Fehler: " & Str(Err) & ": " & Error$)
cLog.Close
Else
Print "CpyToServer in editrans.nsf hat Fehler " & Str(Err) & " in Zeile " & Erl() & ":" & Error$
End If
Resume Ende
End Sub
Wenn das Ding über eingang Mail gestartet wird, kommt zuerst:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim a As NotesAgent
Set db = s.CurrentDatabase
Set a = db.GetAgent("CopyToServer")
If a.RunOnServer = 0 Then
Print "Queue processed on server " & db.Server
Else
Print "Error processing queue on server " & db.Server
End If
End Sub
"Copy to Server" nimmt nur alle Dokumente in einem bestimmten Ordner und ruft
wieder "ProcessDocuments" auf.
Hierbei wird die Mail in irgend einer Form umgewandelt und Umlaute werden zu ?.
Ich komme hier einfach nicht weiter. Bin für jeden Tip dankbar!
Grüsse auf Hessen
-
Hallo,
läuft der Agent nach Eingang neuer Mail, läuft er auf dem Server.
Lässt du ihn per Hand laufen, läuft er auf dem Client.
Ich gehe mal davon aus, dass du irgendein deutsches Windows als Basis für deinen Client benutzt. Da passt das schon.
Aber: Kennt die AS/400 (dein Server) deutsche Umlaute?
Bye
Onkel ToM
-
Der Knackpunkt wird die Zeile
contents = Rtitem.Text
sein. Hier wird der Inhalt des Rich Text Feldes ausgelesen und nur der Text zurückgeliefert. Offenbar kennt das Betriebssystem die deutschen Umlaute nicht.
Da solltest Du Dich an den Admin der AS 400 wenden...
Andreas
-
Wow, das wird es sein! Vielen Dank für die super schnelle Antwort!
Optimistisch wie ich bin setzte ich mal auf erledigt.
-
Wobei - bei AS400 und Vorsprechen beim verantwortlichen Admin, da wäre ich nicht ganz so optimistisch.
Es sind gewisse Seiteneffekte und Abhängigkeiten zu anderen nicht Notes Anwendungen zu berücksichtigen.
Ausser auf der Kiste läuft "nur" der Domino Server und keine anderen Anwendungen.
Andreas
-
Wobei contents = Rtitem.Text doch nur für den Export als TXT gebraucht wird.
Ich sehe im script nicht, daß die Mail selbst überschrieben wird.
Es geht nicht um die Exportdatei, sonden um die Mail in der Datenbank die einmal
verädert wird und einmal nicht.
-
Du speicherst die Mail ab (d.Save), vermutlich reicht das aus, um die "Konvertierung" durchzuführen...
Probier doch mal folgendes: erstell einen Agenten mit diesen paar Zeilen:
Dim ses as New NotesSession
Dim db as NotesDatabase
Dim viw as NotesView
Dim doc as NotesDocument
set db = ses.CurrentDatabase
set viw = db.GetView( "AmBestenEinenOrdner" )
set doc = viw.GetFirstDocument
call doc.Replaceitemvalue( "Processed" , Format(Now(), "General Date")
call doc.Save( True, False )
Jetzt lass den Agenten auf dem Server rennen (per te amgr run "DeineDB.nsf" 'NameDesAgents' )
und kuck, ob die Mail (die Du vorher in den Ordner schiebst, den Du als viw angegeben hast) konvertiert wird, oder nicht...
Wenn ja, dann hast Du die bestätrigung, wenn nein musst Du den Agenten nach und nach um dein Script ergänzen und schauen, welcher Befehl die Konvertierung veranlasst...
HTH
Tode
-
Hi,
ich gehe einmal davon aus, das die Mail aus dem Internet gesendet wird. Die Standard konfiguration ist, das der Domino Server die Mail im orginal Format belässt, das heist in der Mail-DB steht eine MIME Mail.
Wenn nun auf dieses Dokument zugegriffen wird, dann wird die Mail in diesem Fall konvertiert. Wenn nun ein System benutzt wird, das die deutschen Umlaute oder auch die einer anderen Sprache nicht kennt, dann werden diese eben automatisch durch Sonderzeichen ersetzt.
Es ist also wichtig, bei MIME Dokumenten auch die MIME Klassen von Script zu verwenden, denn nur dann habe ich als Programmierer Einfluss darauf wie der Inhalt gelesen werden soll.
-
Dann gibt er folgendes auf der Konsole aus:
AMgr: Error attempting to load agent 'nimmmail' in 'mail/gpresser.nsf': Unsupported trigger and search in the background or embedded agent
Zuerst habe ich als Auswahl alle in Odner gehabt. Bei der suche nach dieser Fehlermeldung aber gemerkt das es nicht geht bei
-All unread documents in view
-All documents in view
-All selected documents
-When documents are pasted documents
Jetzt habe ich keine Auswahl und dennoch kommt die Meldung...
-
Der Trigger "durch ereignis" funktioniert nicht, wenn man einen Agenten auf dem Server ausführen will... stell auf "durch Zeitplan" und Ziel "alle Dokumente in der Datenbank"
Dann klappt's auch mit dem amgr run
Gruß
Tode