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