Rebuilding a Notes Mail Inbox
October 9, 2005 – 9:20 amYour Inbox in your mail file has become corrupt for whatever reason. Because the Inbox is a folder, it does not use selection formulas to give a collection of documents. It is built by the router depositing messages there. Once the folder is destroyed or replaced, the collection is lost with it. After replacing it with a new one, only new documents will be deposited in it from that point on.
Below is a script that can be used to repopulate your Inbox with the older mail messages that have not been currently filed in folders. The script can be placed in a button and mailed to the users who need it.
NOTE: It is very important to make a backup of the mail file before using it.
This script agent moves ANY document that does not exist in a folder to the Inbox. This means that some documents that only exist in the All Documents view will also be moved. This includes documents such as Profile documents and Organizer Setup documents. When finished, the user should select these documents and choose Actions, Remove From Folder from the menu.
NOTE: Deleting a document from any view or folder deletes it entirely from the database.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | '************************************************************ ' This script builds an array of documents that are included in a folder. ' It then compares each document in the All Documents view to each document ' in the array. If it finds one, it breaks out ' and continues onto the next document. If it reaches the end of the array, ' then it hasn't found a match and the document is moved to the Inbox folder. '************************************************************ 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 fUNID() As String ' array of UNID's of docs in folders Dim i As Integer ' UNID array index Dim deldate As notesitem Dim Chair1 As notesitem i =0 Set db = s.CurrentDatabase Redim fUNID(0) ' Build UNID array by looping through folders, then their documents Forall view In db.views If view.IsFolder And Not view.Name=("($All)") Then Set fDoc = view.GetFirstDocument While Not fDoc Is Nothing Redim Preserve fUNID(i) fUNID(i) = fDoc.UniversalID i=i+1 Set fDoc = view.GetNextDocument(fDoc) Wend End If End Forall ' Loop through docs in the All Documents view and compare UNIDs to each doc in the array Set ad = db.GetView("($All)") Set aDoc = ad.GetFirstDocument While Not aDoc Is Nothing i = 0 Do While i < = Ubound(fUNID) If fUNID(i) = aDoc.UniversalID Then Exit Do End If i = i + 1 Loop Set deldate = adoc.getfirstitem("delivereddate") Set Chair1 = adoc.getfirstitem("CHAIR") If i > Ubound(fUNID) And Not deldate Is Nothing And Chair1 Is Nothing Then Call adoc.PutInFolder( "($Inbox)") End If Set aDoc = ad.GetNextDocument(adoc) Wend End Sub |
Lotus Software KnowledgeBase Document# 152633





4 Responses to “Rebuilding a Notes Mail Inbox”
Hi,
I have tested this Script and I found an error in the last part (line 35 and 38). The last part must be look like this:
Enjoy
By Dominik on Oct 24, 2005
Wenn das Array fUNID die 65kB-Marke sprengt, tritt ein nicht abgefangener Fehler auf. Das passiert, wenn mehr als ca. 1800 Mails in Ordnern sind.
Vielleicht kann jemand das Script überarbeiten mit der Listenumwandlung.
By Norbert Goeth on Nov 6, 2005
Hallo,
vielen Dank für den Code.
Habe Ihn ein wenig überarbeitet (Liste statt Array und div. Kleinigkeiten)
Daniel
By Daniel Jaeger on Sep 18, 2006