Domino 9 und frühere Versionen > Entwicklung
Agent darf Datei nicht speichern
OCS:
schade! trotzdem vielen dank! hat vieleicht ein anderer noch was?
gruß
umi:
Soweit ich das beurteilen kann liegt es an den Rechten der Dienste.
Domino wird standardmässig unter dem System Account gestartet. Dieser Account darf aber nur auf lokale Laufwerke zugreifen.
Da kannst Du im Script noch soviel probieren, Windows klemmt da ab.
Unter Win2k kannst Du den Dienst einfach auf ein entsprechendes Konto umstellen. Wie das unter NT funktioniert? keine Ahnung.
gruss
OCS:
So, ich schon wieder!!! Hab jetz mal von diversen Hilfequellen das hier zusammen... Leider krieg ich nen error an der Stelle mit dem >:D (Fehlerteufel) dahinter... Find aber leider den Grund nicht... Der Agent läuft immer nach neuem Maileingang auf dem Server und soll neu ankommende Mails von Ihrem Anhang befreien und diesen nach c:\reports\ ablegen:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim dbug As NotesLog
Dim rtitem As Variant
Dim fileCount As Integer
Dim it As NotesItem
fileCount = 0
Set dbug = New NotesLog("Router log")
dbug.LogActions = True
dbug.OpenAgentLog
dbug.LogAction("begin")
Set doc = session.documentcontext
Set it = doc.GetFirstItem("Subject") >:D
dbug.LogAction("doc subject from context" + "-> " + it.Text)
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
fileCount = fileCount + 1
dbug.LogAction("file count:"+Cstr(fileCount))
If o.Type = EMBED_ATTACHMENT Then
Call o.ExtractFile( "c:\reports\newfile" & Cstr( fileCount ) )
Call o.Remove
dbug.LogAction("attachment removed")
doc.stripped = "yes"
Call doc.Save( True, True )
End If
End Forall
End If
REM Finish up agent log processing
dbug.LogAction("Mail preprocessing agent is done")
dbug.Close
An der markierten Stelle bekomme ich Object VAriable not set...! Hab den Zugriff " Set doc = session.documentcontext " aber vorher auch noch nirgends gesehen....! Geh also mal davon aus, dass er Doc nicht in den Zugriff bekommt! Hab ich ne andere Möglichke das zuletzt eingegangene Dokument zu bekommen??
Gruß
OCS:
ok, bin jetz nen (kleinen) Schritt weiter... mir is jetz relativ klar (glaub ich zumindest) das der Aufruf "Set doc = session.documentcontext" nur funktioniert, wenn ich den Agent von Hand aufrufe wenn ich die Hilfe richtig verstehe! Also noch mal die Frage:
Hab ich ne andere Möglichke das zuletzt eingegangene Mail-Dokument zu bekommen??
Gruß
OCS:
Hat zwar niemand geantwortet, aber trotzdem, hier die funktionierende Lösung:
On Error Goto fehler
Dim session As New NotesSession
Dim view As NotesView
Dim doc As NotesDocument
Dim stripped As notesitem
Dim rtitem As Variant
Dim sViewName As String
Dim sDestDir As String
Dim dbug As NotesLog
Dim sFieldName As String
Dim sFileAttr As String
Dim iKleinerHelfer As notesitem
Dim sKleinerHelfer As String
Dim sBetreff
Set dbug = New NotesLog("Router log")
dbug.LogActions = True
dbug.OpenAgentLog
dbug.LogAction("Verarbeitung beginnt")
' In dieser Ansicht sind die Dokumente abgelegt
' Das kann auch ein Ordner sein
sViewName = "($Inbox)"
' Zielverzeichnis
sDestDir = "C:\reports\"
' Feldname des Richtext Feldes - Bei Mails heißt es einfach "Body"
sFieldName = "Body"
sBetreff = "Subject"
' Ansicht öffnen
Set view = session.CurrentDatabase.getView(sViewName)
' erstes Dokument auswählen
Set doc = view.getFirstDocument
' Solange wie in der Ansicht Dokumente zu finden sind, wird die Schleife durchlaufen
While Not(doc Is Nothing)
Set iKleinerHelfer = doc.getFirstItem(sBetreff)
sKleinerHelfer = iKleinerHelfer.text
If sKleinerHelfer = "EDI" Then
' Der Anhang ist immer in einem Richtext Feld
Set rtitem = doc.getFirstItem(sFieldName)
If ( rtitem.Type = RICHTEXT ) Then
' Wenn kein Anhang vorhanden ist, dann nicht weitermachen
If Not Isempty(rtitem.EmbeddedObjects) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
' Anhang lösen
Call o.extractFile( sDestDir + o.Source )
' Prüfen ob Datei extrahiert wurde
sFileAttr = Str(Getfileattr(sDestDir + o.Source))
If sFileAttr <> "" Then
dbug.LogAction("Die Datei " + o.Source +" wurde in das Verzeichnis '" + sDestDir + "' kopiert. ")
Else
dbug.LogAction("Fehler ! Datei konnte nicht extrahiert werden")
End If
' Anhang entfernen - zum Testen diese Zeile ausdokumentieren
'Call o.remove
' hinterher das Dokument wieder speichern, damit die Löschung übernommen wird
sKleinerHelfer= sKleinerHelfer + " --> bearbeitet"
Call doc.Replaceitemvalue("Subject", sKleinerHelfer)
Call doc.save( False, True )
End If
End Forall
End If
End If
' nächstes Dokument in der Ansicht suchen
End If
Set doc = view.getNextDocument(doc)
Wend
dbug.LogAction("Verarbeitung beendet")
dbug.Close
Exit Sub
fehler:
Messagebox "Fehler : "+Error()+" Agent - in Zeile "+Str(Erl()),16,"Fehler"
Exit Sub
Gruß
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln