VB.NET-Tipp 0094: Ungelesene E-Mails im Outlook-Profil ermitteln
von Kriechi
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: | 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: |
' 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.