Мы создали надстройку для outlook для архивации неактивных писем в жестком диске. Все работает нормально, за исключением сообщений электронной почты, которые не отображаются в папке outlook, поскольку они старше 6 месяцев (или какой-либо другой настройки, которую они использовали).
Поскольку нежелательно изменять настройки, чтобы показывать все электронные письма на сервере, я бы предпочел установить это в плагине на уровне папок или использовать другой обходной путь, чтобы копировать невидимые электронные письма. .
For i = 1 To NumberOfFolders
FolderTitle = objFolder.Folders(i).Name.ToString
FolderTitle = RemoveSpecialChars(FolderTitle)
Dim FolderPath As String
FolderPath = Link & FolderTitle & "\"
If Not System.IO.Directory.Exists(FolderPath) Then
MkDir(Link & FolderTitle)
End If
emailorder = 0
For Each Item In objFolder.Folders(i).Items
emailorder = emailorder + 1
Title = Strings.Right("000" & emailorder, 4) & " - " & RemoveSpecialChars(Item.Subject)
path = FolderPath & Title & ".msg"
Item.SaveAs(path)
ProgressValue = ProgressValue + 1
ProgressBarArchiving.Value = ProgressValue
Next
objFolder.Folders(i).Delete()
NumberOfFolders = objFolder.Folders.Count
If NumberOfFolders > 0 Then
i = 0
Else
MsgBox(ProgressValue & " e-mails archived")
Me.Close()
Exit Sub
End If
Next
Таким образом, я ищу решение, в котором я могу найти и скопировать электронные письма, которые не видны в Outlook для пользователя, или где я могу сделать все электронные письма видимыми на уровне папок, чтобы скопировать их без перегрузки. почтовый ящик с большим количеством старых писем.
В качестве теста я создал следующее (msgbox просто посмотреть, что происходит:
Dim Session As RDOSession = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = app.Session.MAPIOBJECT
Dim store As RDOExchangeMailboxStore = Session.Stores.DefaultStore
Dim storeID As String = store.EntryID
MsgBox("StoreID: " & storeID)
Dim FolderTest As RDOFolder
FolderTest = Session.PickFolder()
Dim FolderTestID As String = FolderTest.EntryID
MsgBox("FolderTestID: " & FolderTestID)
Dim MAPI_NO_CACHE As Integer
'Dim MAPI_BEST_ACCESS As Integer
Dim FolderTest2 As RDOFolder = Session.GetFolderFromID(FolderTest.EntryID,, MAPI_NO_CACHE)
Dim NumItems As Long = FolderTest2.Items.Count
MsgBox("NumItems: " & NumItems)
For Each Item In FolderTest2.Items
MsgBox(Item.Subject)
Next