Autor Thema: Fragen zu Mail Inbox Maintenance  (Gelesen 6177 mal)

Offline (h)uMan

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.056
  • Geschlecht: Männlich
  • Wird schon ...
Fragen zu Mail Inbox Maintenance
« am: 27.03.14 - 08:58:09 »
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!
Beste Grüße, Uwe

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Fragen zu Mail Inbox Maintenance
« Antwort #1 am: 27.03.14 - 09:16:21 »
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

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Fragen zu Mail Inbox Maintenance
« Antwort #2 am: 28.03.14 - 08:32:05 »
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

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

Gruß

André

Offline (h)uMan

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.056
  • Geschlecht: Männlich
  • Wird schon ...
Re: Fragen zu Mail Inbox Maintenance
« Antwort #3 am: 28.03.14 - 10:58:23 »
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.?
Beste Grüße, Uwe

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Fragen zu Mail Inbox Maintenance
« Antwort #4 am: 28.03.14 - 11:01:22 »
Hallo,

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

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


Andreas

Offline (h)uMan

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.056
  • Geschlecht: Männlich
  • Wird schon ...
Re: Fragen zu Mail Inbox Maintenance
« Antwort #5 am: 28.03.14 - 11:19:07 »
Zitat
Schau mal "NotesDocument.PutInFolder" an. Da gibt es einen optionalen Parameter.

Ordner wird also erstellt wenn nicht vorhanden, da "Call doc.PutInFolder(Auslagerungsordner, True)" :-)

Zitat
Denk einfach daran, dass die "Markierungen" fuer gelesene und ungelesene Dokumente personenbezogen sind.
Ok, der Agent könnte ja im Namen des Inhabers der Mail-DB laufen
Beste Grüße, Uwe

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Fragen zu Mail Inbox Maintenance
« Antwort #6 am: 28.03.14 - 11:33:17 »
Zitat
Ok, der Agent könnte ja im Namen des Inhabers der Mail-DB laufen
Und daran glaubst Du?  :o

Wen der User seine Inbox selbst nicht aufraeumt, dann wird er sehr wahrscheinlich auch nicht den Agenten starten und damit seinen Notes-Client beim ersten Lauf fuer einige Zeit "lahmlegen"


Andreas

Offline schurl85

  • Junior Mitglied
  • **
  • Beiträge: 57
Re: Fragen zu Mail Inbox Maintenance
« Antwort #7 am: 28.03.14 - 11:58:15 »
auf OpenNTF gibt es dazu auch ein Projekt, es schiebt soviel ich weiß die Dokumente aus dem Eingang in ein definiertes Verzeichnis, sowie die "verweisten" Dokumente ohne Ordner in "Alle Dokumente" in ein definiertes Verzeichnis. Vielleicht ist das auch interessant:

http://openntf.org/main.nsf/project.xsp?r=project/Inbox%20Maintenance%20-%20Alternative

lg
Georg
Georg

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Fragen zu Mail Inbox Maintenance
« Antwort #8 am: 31.03.14 - 07:46:54 »
Hallo,

hier noch ein paar Antworten von mir:

Der Agent legt den Ordner an, wenn er nicht vorhanden ist, wie Andreas schon geschrieben hat. Er läuft mit Serverkennung und nimmt keine Rücksicht auf Ungelesen-Markierungen, da die "Jäger und Sammler" sowieso viele Mails gar nicht öffnen (vor allem interne Linknachrichten). Durch den Ordnernamen wird der neue Ordner in der Regel als erster Ordner in der Liste angezeigt, so dass man sehr schnell sieht, wenn ungelesene Mails verschoben wurden (kommt bei "normalen" Benutzern nur im Urlaub vor).

Das Laufzeitverhalten ist bei uns sehr unterschiedlich und hängt vor allem an folgenden Kritieren:
1. Anzahl der Maildatenbanken auf dem Server (für 3000 Mail-Dbs ist das Wochenende selbst bei starken Maschinen etwas kurz)
2. Anzahl der Mails in der jeweiligen Datenbank (unabhängig davon, ob diese im Eingangsordner liegen)
3. Größe der zu bearbeitenden Mails
4. Anzahl der Ordner in einer Mail-Db
5. Anzahl der Mails im "Zielordner" (ab ca. 20.000 reduziert sich bei uns die Zugriffsgeschwindigkeit merklich)

Da die richtig bösen Maildatenbanken leider in allen Kategorien schlecht abschneiden, waren wir gezwungen bei einigen Datenbanken den Agenten erstmalig am Client laufen zu lassen, da das Serverzeitfenster nicht ausgereicht hat, die Folgeläufe gehen dann.

Gruß

André

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz