Jak načíst konkrétní zprávy pomocí metody Find a metody Restrict v jazyce Visual C#

Shrnutí

Tento článek popisuje, jak použít knihovnu objektů aplikace Microsoft Outlook 10.0 k načtení určitých zpráv pomocí metody Find a metody Restrict v jazyce Microsoft Visual C#.

Další informace

Chcete-li použít knihovnu objektů aplikace Microsoft Outlook 10.0 k načtení určitých zpráv, postupujte takto:

  1. Spusťte aplikaci Microsoft Visual Studio .NET nebo Microsoft Visual Studio 2005.

  2. V nabídce Soubor přejděte na příkaz Nový a klepněte na příkaz Projekt.

  3. V seznamu Typy projektů Visual C# klikněte na položku Konzolová aplikace.

    Ve výchozím nastavení se vytvoří soubor Class1.cs.

    Poznámka: V aplikaci Microsoft Visual C# 2005 klikněte na položku Visual C#" v seznamu typů projektů Visual C# . Ve výchozím nastavení se vytvoří Program.cs.

  4. Přidejte odkaz na knihovnu objektů Microsoft Outlooku 10.0. Udělejte to takto:

    1. V nabídce Projekt klikněte na Přidat odkaz.

    2. Klikněte na kartu COM , vyhledejte knihovnu objektů Microsoft Outlook 10.0 a pak klikněte na Vybrat.

      Poznámka: V jazyce Microsoft Visual C# 2005. na tlačítko Vybrat není nutné klikat.

    3. V dialogovém okně Přidat odkazy klikněte na tlačítko OK.

    4. Pokud se zobrazí výzva k vytvoření obálky pro vybrané knihovny, klikněte na tlačítko Ano.

  5. V okně kódu nahraďte kód následujícím kódem:

    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;
          }
       }
    }
    
    
  6. V kódu vyhledejte textový řetězec TODO a upravte kód pro své prostředí.

  7. Stisknutím klávesy F5 sestavte a spusťte program.

Reference

Další informace o funkcích zabezpečení aplikace Outlook 2002 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

290500 Description of the e-mail security features in Outlook 2002 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Další informace o problémech, ke kterým může dojít při použití vlastnosti Count velkých kolekcí, naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

294385 OL2002: Nesprávná vlastnost Count (Počet) při použití opakovaných událostí