Member 13336882 Ответов: 1

Не удается получить имя папки электронной почты с помощью IMAPX VB.NET


Я использую этот код, чтобы получить список папок электронной почты :

Class emailFolder
          Public Property Title As String
      End Class

        Public Shared Function GetFolders() As List(Of emailFolder)
          Dim folder = New List(Of emailFolder)
          Dim foldername = client.Folders
          For Each parentFolder In foldername
              Dim parentPath = parentFolder.Path
              If parentFolder.HasChildren Then
                  Dim subfolders = parentFolder.SubFolders
                  For Each subfolder In subfolders
                      Dim subPath = subfolder.Path
                      folder.Add(New emailFolder With {.Title = parentFolder.Name})
                  Next
              End If
          Next
          Return folder
      End Function

      Public sub btn_click handles Button1.click

      ListView.ItemSource=GetFolders


Я не знаю, что не так с моим кодом, но элементы, которые я получаю в listview(кстати, я нахожусь в wpf), выглядят следующим образом :

MyApplication++emailfolder
MyApplication++emailfolder
MyApplication++emailfolder
MyApplication++emailfolder

Что я делаю не так?

Что я уже пробовал:

То, что я пробовал, уже упоминалось в посте выше

1 Ответов

Рейтинг:
2

Jochen Arndt

У вас есть внутренняя петля (foreach subfolder In subfolders) но создавайте имя всегда из parentFolder.

Так и должно быть (непроверено)

' Optionally add parent folder always here
'folder.Add(New emailFolder With {.Title = parentFolder.Name})
If parentFolder.HasChildren Then
    Dim subfolders = parentFolder.SubFolders
    For Each subfolder In subfolders
        folder.Add(New emailFolder With {.Title = subFolder.Name})
    Next
' If parent folder has not been added above, do it here.
Else
    folder.Add(New emailFolder With {.Title = parentFolder.Name})
End If


Member 13336882

тот же результат

Member 13336882

я не понимаю...можете ли вы попробовать код самостоятельно и посмотреть, будет ли результат таким же

Jochen Arndt

Извините, у меня есть VB.Сеть не установлена.

Вы уже использовали parentFolder.Name вместо subFolder.Name чтобы добавить имя в список. Таким образом, все имена дочерних папок, добавленные в список, будут идентичны. Вы также не добавили имена папок для папок, в которых нет детей.

Но ваш вывод "MyApplication++emailfolder" указывает на то, что есть еще что-то неправильное (вы не получили имена папок).