Imports Interop
Public Module ExchangeTest
Public Sub Main()
Dim oSession As New CDO.Session
Try
Dim sServerName As String = "mailserver" 'šos jānomaina!
Dim sProfileName As String = "user"
oSession.Logon(NewSession:=True, NoMail:=False, ProfileInfo:=sServerName & vbLf & sProfileName)
Dim oFolder As CDO.Folder 'Folder objekts iterēšanai pa folderu hierarhiju
Dim oFolders As CDO.Folders 'Folders objekts kolekciju
Dim oInfoStores As CDO.InfoStores 'InfoStoru kolekcija, ko dabū no sesijas objekta
Dim oInfoStore, otInfoStore As CDO.InfoStore 'InfoStore objekts, kur atrodam "Public Folders"
'šeit dabūjam visas InfoStores, kas zināmas lietotāja sesijai
'tur būs "Inbox", "Public Folders" un varbūt vēl kāds
oInfoStores = CType(oSession.InfoStores, CDO.InfoStores)
'folderu kolekcijā meklējam "Public Folders"
'jāņem vērā 1-bāzētās kolekcijas!!!
For i As Integer = 1 To CInt(oInfoStores.Count)
otInfoStore = oInfoStores.Item(i)
If CStr(otInfoStore.Name) = "Public Folders" Then
oInfoStore = CType(oInfoStores.Item(i), CDO.InfoStore)
'"Public folders" ir atrasts, oInfoStore satur referenci uz to
Exit For
End If
Next '
Dim oFields As CDO.Fields
Dim oFieldsItem As CDO.Field
Const PR_IPM_PUBLIC_FOLDERS_ENTRYID As Integer = &H66310102
oFields = CType(oInfoStore.Fields, CDO.Fields) 'stores atribūti
'atrodam atribūtos "Public folders" ID
oFieldsItem = CType(oFields.Item(PR_IPM_PUBLIC_FOLDERS_ENTRYID), CDO.Field)
'dabū referenci uz FOLDERA (nevis InfoStore) objektu
'te jālieto GetFolder pēc foldera ID, citādi notiek kļūda.
oFolder = CType(oSession.GetFolder(oFieldsItem.Value, oInfoStore.ID), CDO.Folder)
Dim strFolderi() As String = {"All public folders", "e-Pasts - test"}
'dabū folderu kolekciju, kas atrodami publiskajos folderos
oFolders = CType(oFolder.Folders, CDO.Folders)
For Each sFolder As String In strFolderi
For iSk As Integer = 1 To CInt(oFolders.Count)
'iterē cauri objektiem darba folderī,
'līdz atrod nākamo līmeni
oFolder = CType(oFolders.Item(iSk), CDO.Folder)
If CStr(oFolder.Name) = sFolder Then
'ja vārds sakrīt, tad varam iet vienu līmeni zemāk
oFolders = CType(oFolder.Folders, CDO.Folders)
Exit For
End If
Next
Next
Dim oMessages As CDO.Messages
Dim oMessage As CDO.Message
Dim oFilter As CDO.MessageFilter
oMessages = CType(oFolder.Messages, CDO.Messages)
oFilter = CType(oMessages.Filter, CDO.MessageFilter)
oFilter.Unread = True
For iCnt As Integer = CInt(oMessages.Count) To 1 Step -1
oMessage = CType(oMessages.Item(iCnt), CDO.Message)
Debug.WriteLine(CStr(oMessage.Subject))
Next
Finally
oSession.Logoff()
End Try
End Sub
End Module