Приложение Outlook - не удается получить список папок - PullRequest
0 голосов
/ 15 ноября 2011

Я создал небольшую программу для сохранения своих электронных писем в папке Windows.

Я не могу получить список папок Outlook.

Когда я проверяю, выбрал ли япапка «Входящие», это не так!

Dim app As Outlook.Application
Dim ns As Outlook.NameSpace
Dim siFolder As Outlook.Folder

Dim Annee As Integer
Dim Mois As Integer
Dim Jour As Integer

app = New Outlook.Application()
ns = app.Session

siFolder = CType(ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox), Outlook.Folder) 'I select here the Inbox Folder

' I do a test, but siFolder.name appears not to be the inbox folder !!

If siFolder.Name Is ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) Then
   Annee = Format(mailitem.ReceivedTime, "yyyy")
   Mois = Format(mailitem.ReceivedTime, "MM")
   Jour = Format(mailitem.ReceivedTime, "dd")
ElseIf siFolder Is ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail) Then
   Annee = Format(mailitem.SentOn, "yyyy")
   Mois = Format(mailitem.SentOn, "MM")
   Jour = Format(mailitem.SentOn, "dd")
Else
   MsgBox("Aucune boite sélectionnée")
   End 'because i can't select the Inbox, application ends here.
End If

1 Ответ

0 голосов
/ 16 ноября 2011

Это код, который я написал некоторое время назад. Добавляет папки в древовидную структуру:

Public Sub startTreeviewBuild()

    Dim oApp As New Outlook.Application()
    Dim oNS As Outlook.NameSpace = oApp.GetNamespace("mapi")
    Dim objFolder As Outlook.MAPIFolder = Nothing

    oNS.Logon("Outlook", "", False, True)
    'oNS.Session.AddStore("C:\pstfile.pst")' uncomment to point to a pst file
    objFolder = oNS.Session.Folders.GetLast()

    TreeView1.Visible = False
    TreeView1.Nodes.Clear()
    TreeView1.Nodes.Add(objFolder.Name)
    buildPSTTreeview(objFolder, TreeView1.Nodes(0))
    TreeView1.Visible = True

End Sub

Public Sub buildPSTTreeview(ByVal StartFolder As Outlook.MAPIFolder, ByVal parentnode As TreeNode)
    Dim objItem As Object
    Dim mailItem As Outlook.MailItem
    Dim MItem As Outlook.MailItem = Nothing

    For i = 1 To StartFolder.Items.Count
        objItem = StartFolder.Items.Item(i)
        If TryCast(objItem, Outlook.MailItem) IsNot Nothing Then
            mailItem = DirectCast(objItem, Outlook.MailItem)
            If mailItem.Subject = Nothing Then
                parentnode.Nodes.Add(mailItem.EntryID)
            Else
                parentnode.Nodes.Add(mailItem.Subject.ToString)
            End If

        End If
    Next

    ' process all the subfolders of this folder
    Dim objFolder As Outlook.MAPIFolder = Nothing
    For i = 1 To StartFolder.Folders.Count
        objFolder = StartFolder.Folders.Item(i)
        Dim myNode As TreeNode = New TreeNode(objFolder.Name)
        parentnode.Nodes.Add(myNode)
        'objFolder.Name
        Application.DoEvents()
        Call buildPSTTreeview(objFolder, myNode)
    Next
    objFolder = Nothing
    objItem = Nothing

End Sub

Может и не идеально, но у меня сработало: -)

...