Domino 9 und frühere Versionen > ND9: Administration & Userprobleme

Fragen zu Mail Inbox Maintenance

(1/2) > >>

(h)uMan:
Hallo,

viele unserer User lassen Mails in der Inbox und verschieben Mails nicht in Ordner oder löschen auch mal Mails. Letztens hatte ich eine Mail-DB mit mehr als 53000 Dokumenten in der Inbox in der Mache.

Nun gibt es ja serverseitig die Möglichkeit, über eine Policy die "Mail Inbox Maintenance" zu aktivieren. Über die Policy könnte ich dann bei den "unbelehrbaren" Usern die Inbox aufräumen lassen.

Folgende Fragen habe ich noch dazu:
Bei der "Mail Inbox Maintenance" werden ja die relevanten Dokumente aus der Inbox in "Alle Dokumente" verschoben. Gibt es eine Möglichkeit, die Dokumente in einen bestimmten Ordner zu verschieben, der - falls noch nicht vorhanden - vorher angelegt wird?

Kennt jemand ein Tool, mit dem für alle Mail-DBs jeweils die Anzahl Dokumente in der Inbox ermittelt und in einer Tabelle darstellt werden können?
Oder hat jemand vielleicht schon ein Agent oder Script für die Aufgabe?

Besten Dank für Infos bzw. Tipps!

ascabg:
Hallo,

Die Dokumente werden beid er Maintenance nicht in "Alle Dokumente" verschoben, das werden diese ja ohnehin schon angezeigt, sondern nur aus der Inbox "entfernt".

Soweit ich weiss, ist es nicht moeglich, hier einen gesoenderten "Ordner" anzugeben.

Ein solches Tool ist doch relativ einfach zusammengeschrieben. (ca. 1 Stunde wuerde ich sagen)


Andreas

it898ur:
Hallo,

wir hatten die gleiche Anforderung und haben dies über einen wöchentlichen Agenten in der Mail-Db gelöst.

Hier der entsprechende Codeteil:


--- Code: ---Private Sub ClearInbox()
%REM
Beschreibung:
Dieses Script resduziert den Inhalt des Ordners "Eingang | ($Inbox)" auf eine maximale Anzahl von Dokumenten
Darüberhianus gehende Dokumente werden in einen normalen Ordner "- Ausgelagerter Eingang -" verschoben.
Es verbleiben die aktuellsten Dokumente.
%END REM

Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim ecol As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim doc As NotesDocument
Dim Auslagerungsordner As String
Dim wert As String
Dim array() As String
Dim vList As Variant
Dim i As Long
Dim sErrorMess As String

On Error Goto Fehler

Const MaxInboxEntries = 250

Set db = session.CurrentDatabase

Auslagerungsordner = "- Ausgelagerter Eingang -"

Set view = db.GetView("($Inbox)")
If view Is Nothing Then Goto Ende
view.AutoUpdate = False

Set ecol = view.AllEntries

If ecol.Count > MaxInboxEntries Then
' Eingang zu groß
Redim array(MaxInboxEntries) As String
i = 0

Set entry = ecol.GetFirstEntry
Do While Not entry Is Nothing
Set doc = entry.Document

If Cstr(doc.DeliveredDate(0)) <> "" Then
wert = Format(doc.DeliveredDate(0), "yyyymmdd") + Format(doc.DeliveredDate(0), "hhmmss")
Elseif Cstr(doc.PostedDate(0)) <> "" Then
wert = Format(doc.PostedDate(0), "yyyymmdd") + Format(doc.PostedDate(0), "hhmmss")
Else
wert = Format(doc.Created, "yyyymmdd") + Format(doc.Created, "hhmmss")
End If

wert = wert + "~" + doc.UniversalID
If i > Ubound(array) Then Redim Preserve array(Ubound(array) + 100) As String
array( i ) = wert
i = i + 1

Set entry = ecol.GetNextEntry(entry)
Loop

vList = Fulltrim(array)

' nach Datum absteigend sortieren
Call ArraySort( vList, True)

For i = MaxInboxEntries To Ubound(vList)
Set doc = db.GetDocumentByUNID(Strright(vList( i ), "~"))

Call doc.PutInFolder(Auslagerungsordner, True)
Call doc.RemoveFromFolder("($Inbox)")
Next
End If

Ende:
Set doc = Nothing
Set entry = Nothing
Set ecol = Nothing
Set view = Nothing
Set db = Nothing
Exit Sub

Fehler:
Msgbox "Fehler bei der Bereinigung des Eingangs: " + Error$ + " in Zeile " + Str(Erl), 16, "Fehler"
Resume Ende
End Sub

Private Sub ArraySort( array As Variant, descending As Integer)
%REM
Parameter:
array (Input) - Zu sortierende Daten
descending (Input) - Absteigent sortieren = True, Aufsteigend = False

Beschreibung: Sortiert ein array von Werten unter Nutzung des Shell Sort Algorithmus (Portiert aus C)
%END REM

Dim aSpans(1 To 9) As Integer
Dim nSpanCount As Integer
Dim nSpanIncr As Integer
Dim nLimit As Integer ' Die Anzahl der zu sortierenden Werte
Dim nSpan As Integer
Dim KeyNum As Integer
Dim SwapEm As Integer
Dim SubArray(1 To 3) As Variant
Dim Record1Keys As Variant
Dim Record2Keys As Variant
Dim doc As notesDocument
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim Temp As Variant
Dim floor As Integer

' Definition der spans welche vom Algorithmus genutzt werden
aSpans(1) = 9840
aSpans(2) = 3279
aSpans(3) = 1093
aSpans(4) = 364
aSpans(5) = 121
aSpans(6) = 40
aSpans(7) = 13
aSpans(8) = 4
aSpans(9) = 1
' Die maximale Anzahl von spans
nSpanCount = 9
' Womit soll gestartet werden ?
nSpanIncr = 1
floor = Lbound( array )
nLimit = Ubound( array ) - floor
If nLimit = 1 Then Exit Sub ' Ein einzelnes Element muss nicht sortiert werden

j = floor
For k = nSpanCount To 1 Step -1
If aSpans(k) > nLimit Then
Exit For
End If
j = k
Next
i = j
For i = j To nSpanCount
nSpan = aSpans(i )
For j = nSpan To nLimit
Temp = array(j)
k = j - nSpan
Do While k >= floor
Dim doSwap As Integer
If descending Then
doSwap = Temp > array(k)
Else
doSwap = Temp < array(k)
End If

If doSwap Then
array(k + nSpan) = array(k)
k = k - nSpan
Else
Exit Do
End If
Loop
array( k + nSpan ) = Temp
Next j
Next i
End Sub

--- Ende Code ---

Der erste Lauf ist vom Zeitverhalten etwas problematisch, aber dann danken es die Server.

Gruß

André

(h)uMan:
Hallo André,

besten Dank für den Code, hilft mir sehr weiter!

Zum Verständnis noch folgende Fragen:
- der "Auslagerungsordner" muss bereits in der Mail-DB existieren, oder?
- ungelesene Dokumente werden auch ausgelagert, oder?
- Welche Erfahrung habt ihr mit Laufzeitverhalten beim 1. Lauf bei ca. 10000 Docs - wie lange dauert es ca.?

ascabg:
Hallo,


--- Zitat ---der "Auslagerungsordner" muss bereits in der Mail-DB existieren, oder?
--- Ende Zitat ---
Schau mal "NotesDocument.PutInFolder" an. Da gibt es einen optionalen Parameter.


--- Zitat ---ungelesene Dokumente werden auch ausgelagert, oder?
--- Ende Zitat ---
Denk einfach daran, dass die "Markierungen" fuer gelesene und ungelesene Dokumente personenbezogen sind.


Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln