Auch wenn man dem Anwender alle Rechte nimmt, gibt es Situationen, in denen Mails nur noch in "Alle Dokumente" zu finden sind, die eigentlich in die Inbox gehören. Über einen Reparatur-Agenten zu verfügen, ist daher immer nützlich. Das folgende Script ist einfach, aber wirkungsvoll. Es kopiert zunächst den Inhalt von "Alle Dokumente" in die Inbox, läuft dann durch alle Ordner und entfernt in Ordnern vorhandene Mails wieder aus der Inbox. Mails, die sich in keinem Ordner befinden, verbleiben in der Inbox. Da bei diesem Algorithmus keine Tabellen aufgebaut werden müssen, funktioniert er bei beliebig vielen Mails und Ordnern. Allerdings kann die Laufzeit bei großen Mailboxen (d.h. sehr viele Mails) beträchtlich sein, so daß es möglicherweise besser ist, den Agenten auf dem Server laufen zu lassen (maximale Agentenlaufzeit im Serverdokument beachten und möglicherweise hochsetzen!).
Sub Initialize
Dim s As New notessession
Dim db As notesdatabase
Dim fDoc As NotesDocument ' Document in folder
Dim ad As notesview ' All Documents view
Dim aDoc As notesdocument ' document in All Docs view
Dim deldate As notesitem
Dim postdate As NotesItem
Dim Chair1 As notesitem
Dim cnt As Long
Set db = s.CurrentDatabase
' Loop through docs in the All Documents view and move into $Inbox
Set ad = db.GetView("($All)")
Set aDoc = ad.GetFirstDocument
cnt = 0
While Not aDoc Is Nothing
Set deldate = adoc.getfirstitem("DeliveredDate")
Set postdate = adoc.GetFirstItem("PostedDate")
Set Chair1 = adoc.getfirstitem("CHAIR")
If (Not (deldate Is Nothing) Or (postdate Is Nothing And Not (deldate Is Nothing))) And (Chair1 Is Nothing) Then
Call adoc.PutInFolder( "($Inbox)")
cnt = cnt + 1
End If
Set aDoc = ad.GetNextDocument(adoc)
Wend
Print Str(cnt)+" mails put into the Inbox"
' Remove documents from $Inbox which are in folders already
' by looping through folders, then their documents
Forall view In db.views
If view.IsFolder And Not view.Name=("($All)") And Not view.Name=("($Inbox)") And Not view.Name=("($Sent)") Then
Set fDoc = view.GetFirstDocument
While Not fDoc Is Nothing
Call fdoc.RemoveFromFolder("($Inbox)")
cnt = cnt -1
Set fDoc = view.GetNextDocument(fDoc)
Wend
End If
End Forall
Print Str(cnt)+" mails remained in the Inbox"
End Sub