Notes Client: Bei beschädigtem Posteingang

Gerade erlebt, bei meinen Usern werden neue Emails nicht mehr im Posteingang angezeigt. Unter „Alle Dokumente“ sind sie aber da… Bei einem anderen User war der Posteingang komplett leer…

Was tun?

Erst einmal das Standardverfahren anwenden:

Alle Ansichten neu aufbauen… Nichts!

Hmm, ok, dann einmal die Schablone refreshen… Nichts!

Naja, Schablonenwechsel hat auch schon einmal geholfen… Nö, heute nicht…!

dbfixup, updall, fluchen & betteln… Äähm, nö Du!!!!

Hng!!! Was denn nun?

Abhilfe hat es geschafft, diesen Agenten in die Datenbank zu pflanzen und laufen zu lassen. Was macht er? Er kopiert alle Dokumente in den Posteingang und löscht dann wieder alle Dokumente, die bereits in anderen Ordnern existieren. Der Agent läuft fies lange, aber es hat bei allen Usern geholfen…

Hier nun der Code:

%REM
	Agent Eingang aufräumen
	Created Jul 13, 2016 by Markus Pooch
	Description: Falls mal die Dokumente im Posteingang weg sind.
%END REM
Option Public
Option Declare

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

 

Schreibe einen Kommentar