Zusammenfassung
In diesem Artikel wird beschrieben, wie Sie die Microsoft Outlook 10.0-Objektbibliothek verwenden, um bestimmte Nachrichten mithilfe der Find-Methode und der Restrict-Methode in Microsoft Visual C# abzurufen.
Weitere Informationen
Gehen Sie folgendermaßen vor, um die Microsoft Outlook 10.0-Objektbibliothek zum Abrufen bestimmter Nachrichten zu verwenden:
Starten Sie Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Klicken Sie in der Liste Visual C#-Projekttypen auf Konsolenanwendung.
Standardmäßig wird die Class1.cs Datei erstellt.
Hinweis: Klicken Sie in Microsoft Visual C# 2005 in der Liste der Visual C#-Projekttypen auf Visual C#. Standardmäßig wird Program.cs erstellt.
Fügen Sie einen Verweis auf die Microsoft Outlook 10.0-Objektbibliothek hinzu. Führen Sie hierzu die folgenden Schritte aus:
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Klicken Sie auf die Registerkarte COM , suchen Sie die Microsoft Outlook 10.0-Objektbibliothek, und klicken Sie dann auf Auswählen.
Hinweis In Microsoft Visual C# 2005. Sie müssen nicht auf "Auswählen" klicken.
Klicken Sie im Dialogfeld Verweise hinzufügen auf OK.
Wenn Sie aufgefordert werden, Wrapper für die ausgewählten Bibliotheken zu generieren, klicken Sie auf Ja.
Ersetzen Sie im Codefenster den Code durch Folgendes:
using System; using System.Reflection; // to use Missing.Value namespace FilterAppointments { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] public static int Main(string[] args) { try { // Create an Outlook application. Outlook.Application oApp = new Outlook.Application(); // Get the Mapi NameSpace and the Logon. Outlook.NameSpace oNS = (Outlook.NameSpace)oApp.GetNamespace("mapi"); // Log on using dialog to choose a profile. oNS.Logon(Missing.Value, Missing.Value, true, true); // Alternate Logon using specific profile // TODO: Change the profile name where it is appropriate. //oNS.Logon("YourValidProfile", Missing.Value, false, true); // Get the Calendar folder. Outlook.MAPIFolder oCalendar = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar); // Get the Items collection in the folder. Outlook.Items oItems = (Outlook.Items)oCalendar.Items; Console.WriteLine("Total Items (unrestricted): " + oItems.Count); //Include all occurrences of recurring items, and then sort them. oItems.Sort ("[Start]", false); oItems.IncludeRecurrences = true; // Define the string for the search criteria. String sCriteria; // Set the criteria for the Date fields. sCriteria = "[Start] <= '09/01/2002 08:00 AM' and [End] >= '2/15/2002 08:00 PM'"; // Set the criteria for a string field. // sCriteria = "[Subject] = 'Weekly recurring meeting'"; // Set the criteria for a numeric field. // Look for meetings that have not been responded to. // sCriteria = "[ResponseStatus] = " + (Int32)Outlook.OlResponseStatus.olResponseNotResponded) // Use the Restrict method to reduce the number of items to process. Outlook.Items oRestrictedItems = oItems.Restrict(sCriteria); oRestrictedItems.Sort ("[Start]", false); oRestrictedItems.IncludeRecurrences = true; Console.WriteLine("Total Items Unrestricted : " + oRestrictedItems.Count); Outlook.AppointmentItem oAppointment; //Get each item until item is null. Outlook.AppointmentItem oAppt; oAppt = (Outlook.AppointmentItem)oRestrictedItems.GetFirst(); while (oAppt != null) { // Console.WriteLine(i.ToString()); Console.WriteLine(" Subject: " + oAppt.Subject.ToString()); Console.WriteLine(" Start time: " + oAppt.Start.ToString()); Console.WriteLine(" End time: " + oAppt.End.ToString()); Console.WriteLine(" Occurrences: " + oAppt.RecurrenceState.ToString()); Console.WriteLine("\n\n"); oAppt = (Outlook.AppointmentItem)oRestrictedItems.GetNext(); } // Use the Find method to get single match. sCriteria = "[Start] >= '09/30/2001'"; Console.WriteLine("Criteria: " + sCriteria.ToString()); oAppointment = (Outlook.AppointmentItem)oItems.Find(sCriteria); Console.WriteLine("Used Find with Date fields"); if (oAppointment is Outlook.AppointmentItem) Console.WriteLine("Found -> " + oAppointment.Subject.ToString()); else Console.WriteLine("No object found"); // Log off oNS.Logoff(); // Clean up oAppointment = null; oRestrictedItems = null; oItems = null; oCalendar = null; oNS = null; oApp = null; } //Simple error handling catch (Exception e) { Console.WriteLine("{0} Exception caught.", e); } //Default return value return 0; } } }Suchen Sie im Code nach der TODO-Textzeichenfolge, und ändern Sie dann den Code für Ihre Umgebung.
Drücken Sie die Taste F5, um das Programm zu erstellen und auszuführen.
Referenzmaterial
Weitere Informationen zu den Sicherheitsfunktionen von Outlook 2002 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
290500 Beschreibung der entwicklerbezogenen E-Mail-Sicherheitsfunktionen in Outlook 2002
Weitere Informationen zu Problemen, die auftreten können, wenn Sie die Eigenschaft "Anzahl" großer Sammlungen verwenden, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
294385 OL2002: Falsche Anzahleigenschaft bei Verwendung von Terminserien