Outlook E-Mails von Ordner in Datagridview einlesen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Outlook E-Mails von Ordner in Datagridview einlesen

    Hallo zusammen,

    bin echt am Verzweifeln, der untere Code funktioniert zwar, aber ich bekomme nicht alle Mails.

    In meinem Postfach sind 209 Mails, in die Tabelle schreibt er aber nur 112 ?!?!?!?



    VB.NET-Quellcode

    1. Dim MyOLApp As Outlook.Application
    2. Dim MailX As Outlook.MailItem
    3. Dim myNameSpace As Microsoft.Office.Interop.Outlook.NameSpace
    4. MyOLApp = CreateObject("Outlook.Application")
    5. myNameSpace = MyOLApp.GetNamespace("MAPI")
    6. Dim folder As Outlook.Folder = TryCast(MyOLApp.Session.PickFolder(), Outlook.Folder)
    7. Try
    8. For Each MailX In folder.Items
    9. Me.DataGridView2.Rows.Add(MailX.SenderName, MailX.Subject, MailX.ReceivedTime)
    10. Next
    11. Catch ex As System.Exception
    12. End Try




    Wenn ich es über Outlook.table mache, dann erhalte ich alle 209, aber hier kann ich kein SenderName usw. anzeigen lassen.

    VB.NET-Quellcode

    1. FolderInbox = myNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox)
    2. Dim Count As Integer = FolderInbox.Items.Count
    3. Table = FolderInbox.GetTable()
    4. MsgBox(Table.GetRowCount)Do Until (Table.EndOfTable)
    5. Row = Table.GetNextRow
    6. rowValues = Row.GetValues
    7. Me.DataGridView2.Rows.Add(rowValues(4), rowValues(1), rowValues(2))
    8. Loop

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EasyKiwi“ ()

    Das hängt mit dem For Each zusammen,, weil Outlook da ein Eigenleben in der Listenverwaltung entwickelt.
    Verwende anstatt
    For Each MailX In folder.Items

    VB.NET-Quellcode

    1. For i = folder.Items.Count To 1 Step -1 'rückwärts!
    2. MailX = folder.Items(i) 'vielleicht war's auch (i-1); musst du testen
    3. ...
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hi Petaod, :thumbsup:

    Danke, zeigt zwar noch immer nicht alle an, 314 von zur Zeit 417. (die älteren werden nicht angezeigt)

    Aber da ich noch Filter verwende für nur bestimmte anzeigen zu lassen, reicht das aus, da alle angezeigt werden die ich brauche.

    MailX = folder.Items(i) passt, i-1 bekommt man eine weniger angezeigt.

    Und ich hatte gedacht, ich hätte alle arten von Schleifen ausprobiert :rolleyes: