Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0094: Ungelesene E-Mails im Outlook-Profil ermitteln

 von 

Beschreibung

Mit diesem Tipp kann die Anzahl der ungelesenen E-Mail für alle Ordner im aktuellen Microsoft-Outlook-Profil bestimmt werden.

Benötigte Verweise: Microsoft Outlook X.X Object Library
Getestet mit: Microsoft Outlook 2007

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Framework-Version(en):

.NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2003, Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [9,21 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2008
' Option Strict:    An
' Option Explicit:  An
' Option Infer:     An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.Deployment
'  - System.Xml
'  - System.Core
'  - System.Xml.Linq
'  - System.Data.DataSetExtensions
'
' Imports: 
'  - Microsoft.VisualBasic
'  - System
'  - System.Collections
'  - System.Collections.Generic
'  - System.Data
'  - System.Diagnostics
'  - System.Linq
'  - System.Xml.Linq
'

' ##############################################################################
' ################################ Module1.vb ##################################
' ##############################################################################
Imports Microsoft.Office.Interop

Module Module1
    Sub Main()
        'Outlook-App erstellen
        Dim oApp As Outlook.Application = New Outlook.Application()

        'Mapi-NameSpace erstellen
        Dim oNS As Outlook.Namespace = oApp.GetNamespace("mapi")
        oNS.Logon("", Reflection.Missing.Value, False, True)

        FindFolders(oNS.Folders)

        'Abmelden
        oNS.Logoff()
        oApp = Nothing
        oNS = Nothing

        Console.WriteLine("Drücken Sie eine beliebige Taste zum Beenden...")
        Console.ReadKey()
    End Sub

    ''' <summary>
    ''' Mithilfe von Rekursion alle Ordner (+Unterordner, usw.) finden, und 
    ''' jeden Ordner dann überprüfen
    ''' </summary>
    ''' <param name="currentFolder">
    '''  Übergeordneter Ordner, der nun durchsucht wird
    '''</param>
    Private Sub FindFolders(ByVal currentFolder As Outlook.Folders)
        For Each subFolder As Outlook.Folder In currentFolder
            FindMails(subFolder)
            FindFolders(subFolder.Folders)
        Next
    End Sub

    ''' <summary>
    ''' Überprüft einen Ordner auf ungelesene Mails, sollte es kein Mail-Ordner 
    ''' sein, wird das im Catch abgefangen
    ''' </summary>
    ''' <param name="folder">zu durchsuchender Ordner</param>
    Private Sub FindMails(ByVal folder As Outlook.MAPIFolder)
        Dim oItems As Outlook.Items
        Try
            oItems = folder.Items
            oItems = oItems.Restrict("[Unread] = true")

            If oItems.Count > 0 Then
                Console.WriteLine(oItems.Count & _
                    " ungelesene Email(s) in """ & folder.Name & """")
            Else
                Console.WriteLine("Keine neuen Nachrichten in """ & _
                    folder.Name & """")
            End If

        Catch ex As Exception
            If Not ex.Message = "Die Unread-Eigenschaft ist unbekannt." Then
                Throw ex
            Else
                ' Hier wird abgefangen falls man in keinen Mail-Ordner kommt, 
                '  sondern z.b. zu den Notizen
            End If
        Finally
            oItems = Nothing
        End Try
    End Sub
End Module

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.