Autor Thema: Fragen zu Mail Inbox Maintenance  (Gelesen 5979 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