Resumen
En este artículo se describe cómo usar la Biblioteca de objetos de Microsoft Outlook 10.0 para recuperar mensajes específicos mediante el método Buscar y el método Restringir en Microsoft Visual C#.
Más información
Para usar microsoft Outlook de objetos 10.0 para recuperar mensajes específicos, siga estos pasos:
-
Inicie Microsoft Visual Studio .NET o Microsoft Visual Studio 2005.
-
En el menú Archivo, seleccione Nuevo y, a continuación, haga clic en Project.
-
En la lista Tipos C# proyectos visuales , haga clic en Aplicación de consola.
De forma predeterminada, se crea el archivo Class1.cs.
Nota En Microsoft Visual C# 2005, haga clic en Vista C#" en la lista Tipos C# proyectos visuales . De forma predeterminada, se crea Program.cs. -
Agregue una referencia a microsoft Outlook de objetos 10.0. Para ello, siga estos pasos:
-
En el menú Proyecto, haga clic en Agregar referencia.
-
Haga clic en la pestaña COM, busque Microsoft Outlook biblioteca de objetos 10.0 y, a continuación, haga clic en Seleccionar.
Nota En Microsoft Visual C# 2005. no tiene que hacer clic en Seleccionar. -
En el cuadro de diálogo Agregar referencias , haga clic en Aceptar.
-
Si se le solicita que genere contenedores para las bibliotecas que seleccionó, haga clic en Sí.
-
-
En la ventana de código, reemplace el código por el siguiente:
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;
}
}
} -
Busque la cadena de texto TODO en el código y, a continuación, modifique el código para su entorno.
-
Presione la tecla F5 para crear y ejecutar el programa.
Referencias
Para obtener más información sobre las características de seguridad de Outlook 2002, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290500 Descripción de las características de seguridad de correo electrónico relacionadas con el desarrollador en Outlook 2002Para
obtener información adicional sobre los problemas que pueden producirse al usar la propiedad Contar de colecciones grandes, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
294385 OL2002: Propiedad Count incorrecta con citas periódicas