Domino 9 und frühere Versionen > ND6: Entwicklung

!!! Problem mit Agent

(1/3) > >>

MrXYZ:
Hi @ALL,  ???

mal wieder ein kleines Problem. Habe einen Agenten geschrieben, der Attachments aus einer Mail auf einen bestimmten Share lösen soll, danach wird eine auf dem Share befindliche exe-Datei angestartet, die den ZIP entpackt, auf Validatät überprüft und die entpackten Dateien in einen anderen Share schiebt.

Lokal funktioniert der Agent einwandfrei. Nur nicht auf dem Server ! Konsolenmeldung Server: object variable not set... ich arbeite auf einem Server, auf dem ich komplette Execution Rechte für die Skripte habe

   On Error Goto ErrorHandler   
   
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim view As NotesView
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   
   
   
   Dim rtitem As Variant
   Dim object As NotesEmbeddedObject
   Dim fileCount As Integer
   Dim tempshare, mailinshare As String
   Dim message As String
   
   Dim mail As NotesDocument
   Dim stream As NotesStream
   
   
   '### DEFINE Sharefolders
   tempshare = "\\server1\mailin$\TEMP\"
   mailinshare = "\\server1\mailin$\Anonymous\"
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("($Inbox)")
   
   fileCount = 0   
   
   Set doc = view.GetFirstDocument
   
   
   
   While Not(doc Is Nothing)
      
      Set rtitem = doc.GetFirstItem( "Body" )
      
      '### Check: Attachment available ?
      
      If doc.HasEmbedded = True Then 'Loop 1
         
         If ( rtitem.Type = RICHTEXT ) Then 'Loop 2
            
         '### Here we go ...
            
            Forall o In rtitem.EmbeddedObjects
               
               If ( o.Type = EMBED_ATTACHMENT ) Then 'Loop 3
                  fileCount = fileCount + 1
                  '# Extract to temporary Directory
                  Print o.Name
                  Call o.ExtractFile ( tempshare & o.Name )
                  
                  
                  '### Start Extraction of files and check
                  Dim result As Integer
                  result = Shell(tempshare & "zipchecka.exe " &  o.Name, 1)
                  pathname = tempshare & "validation-" & Left$(o.Name,Len(o.Name)-4) & ".txt"
                  Sleep 20
                  Call o.Remove
                  Call doc.Save( True, True )
                  'Move processed document to processedfolder
                  'Call doc.Remove(True)
                  
               End If 'End Loop 3
               
            End Forall
            
         Else 'Else Loop 2
            
            
            Print "No attachments in Document"
            
            doc.subject = doc.subject(0) + "No attachments in document"
            Call doc.Save( True, True )
            'Move processed document to processedfolder
            'Call doc.Remove(True)
            Goto NextDoc
            
         End If 'End Loop 2
         
      'Mail generieren mit Informationen
         'Sleep 10
         
         Set stream = session.CreateStream
         
         'Stream defined in Loop for detaching files !
         'pathname = tempshare & "\validation-" & o.Name & ".txt"
         
         If Not stream.Open(pathname, "ASCII") Then
            Messagebox pathname ,, "Open failed"
            Exit Sub
         End If
         
         If stream.Bytes = 0 Then
            
            Messagebox pathname,, "File has no content"
            Exit Sub
            
         End If
         
         'Send mail with information of stream to sender of the mail
         
         Set mail = New NotesDocument(db)
         Call mail.ReplaceItemValue("Form", "Memo")
         Call mail.ReplaceItemValue("Subject", "Notes2XXX - Information Mail")
         mail.sendto = doc.Principal(0)
         Call mail.ReplaceItemValue("Body", stream.ReadText())
         Call stream.Close
         Delete stream
         Call mail.Send(False)
         pathname =""
         Delete mail
         
         
         
      End If
      
NextDoc:
      
      
      'Call doc.Remove(False)
      Set doc = view.GetNextDocument(doc)
      
      
   Wend
   
   
   '### Cleanup Documents
   
ErrorHandler:
   
   routine$ = "Check Attachment Agent - Notes2XXX"
   mailError routine$, Err, Erl, Error
   Exit Sub
   

Glombi:
Du solltest mal nach
Print o.Name
                  Call o.ExtractFile ( tempshare & o.Name )

ein
Print "Nach ExtractFile"
einbauen und in der log.nsf nachsehen, ob das dort steht. Falls nicht liegt es vermutlich an den Verzeichnissen
tempshare = "\\server1\mailin$\TEMP\"
mailinshare = "\\server1\mailin$\Anonymous\"

Andreas

koehlerbv:
Die Markierung der Zeile, die der ErrorHandler angibt, wäre auch nicht schlecht.

Bernhard

MrXYZ:
Das Problem ist, dass der ErrorHandler auch nicht läuft  >:(

Tode:
die Sache ist ganz einfach: Vermutlich läuft der Server (wie 90% aller Domino- Server) als Dienst.
Und ein Dienst läuft mit dem Systemkonto, das keine Netzwerk- Credentials besitzt.

Mit Domino als Dienst auf ein Netzwerkshare zuzugreifen ist damit quasi unmöglich.

Es gibt diverse Workarounds, die aber alle am Server- Setup eingreifen, nicht im Code.

Die wären (u.a):
- Server nicht als Dienst laufen lassen (blöd, wenn man sich ausloggt dann stoppt der Server)
- Server als Dienst mit Benutzernamen laufen lassen (blöd, weil man dann keine Server- Konsole mehr sieht)
- Share einrichten ganz ohne Authentifizierung (blöd wegen Sicherheit)
...

Hier im Forum wurde das schon ein paar mal diskutiert, vielleicht findest Du eine andere Lösung...

Tode

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln