Procedimiento para crear una regla para archivar elementos de correo enviados por un administrador y marcarlos para seguimiento

En este ejemplo se muestra cómo configurar una regla para archivar elementos de correo enviados por el administrador del usuario y marcarlos para realizar un seguimiento.

Ejemplo

Programación de aplicaciones para Office Outlook 2007

El siguiente ejemplo de código se ha extraído del libro sobre programación de aplicaciones para Microsoft Office Outlook 2007 de Microsoft Press (ISBN 9780735622494, copyright Microsoft Press 2007, reservados todos los derechos).

Comprar este libro

Capítulos de ejemplo (en inglés)

Las reglas de Outlook pueden funcionar en el lado servidor o cliente, según el tipo de cuenta y regla. Hay muchas formas para implementar reglas con el fin de aplicar sus propios esquemas organizativos al organizar los elementos en su buzón. Por ejemplo, puede crear una jerarquía de subcarpetas que organice el correo leído y no leído por áreas temáticas. O bien, puede crear una jerarquía de subcarpetas que corresponda al remitente del mensaje. También, puede clasificar el correo y, después, utilizar las carpetas de búsqueda para agregar el correo por categoría.

El modelo de objetos Rules, el cual incluye un objeto Rule que representa una regla en Outlook, permite crear reglas mediante programación para imponer un determinado esquema organizativo, crear una regla específica que sea única para su solución o asegurarse de que ciertas reglas se implementan a un grupo de usuarios. Si usa el modelo de objetos Rules, puede agregar, editar y eliminar reglas mediante programación. Si usa la colección Rules y el objeto Rule, también puede tener acceso, agregar y eliminar reglas definidas para una sesión. Un objeto Rule tiene una propiedad RuleType que indica si la regla es una regla de recepción o envío. Cuando se crea una regla, se especifica la propiedad RuleType y no se puede modificar sin eliminar y volver a crear la regla con una propiedad RuleType diferente. Los objetos RuleAction y RuleCondition, sus objetos de colección y los objetos de acción y condición derivados también se usan para proporcionar mayor compatibilidad con acciones y condiciones de reglas de edición.

El modelo de objetos Rules no admite todas las reglas que puede crear mediante el Asistente para reglas y alertas de la interfaz de usuario de Outlook, pero sí admite las acciones y condiciones de reglas más comunes. Las reglas creadas con este asistente que se aplican a los mensajes, que incluyen elementos de correo, convocatorias de reunión, solicitudes de tareas, documentos, confirmaciones de entrega, confirmaciones de lectura, respuestas de votaciones y avisos de fuera de la oficina, también se pueden crear mediante programación.

Una regla puede ejecutarse en el servidor de Exchange o en el cliente de Outlook, siempre que el buzón del usuario actual esté hospedado en un servidor de Exchange. La propiedad IsLocalRule del objeto Rule devuelve true para indicar que la regla se ejecuta en un cliente y Outlook debe estar ejecutándose para que se ejecute la regla. Si la regla se ejecuta en el servidor, Outlook no tiene que estar ejecutándose para que se evalúen las condiciones y se completen las acciones de la regla.

NotaNota:

No hay ninguna colección independiente que represente las condiciones de excepción de la regla. Utilice la propiedad Exceptions del objeto Rule para obtener una colección RuleConditions que represente las condiciones de excepción de la regla.

Para crear reglas con el modelo de objetos de Outlook, siga estos pasos:

  1. Obtenga la colección Rules desde la propiedad DefaultStore del objeto NameSpace llamando al método GetRules en el objeto Store predeterminado. Utilice un bloque try…catch para justificar que el usuario esté sin conexión o desconectado del servidor de Exchange. Esto impide que Outlook produzca un error.

  2. Llame al método Create en el objeto Rules para crear una variable de instancia o un objeto Rule, especificando un parámetro Name y otro OlRuleType.

  3. Utilice las colecciones RuleActions y RuleConditions para habilitar acciones, condiciones y excepciones en el objeto Rule. Tenga en cuenta que cualquier condición habilitada en la colección RuleConditions, devuelta por la propiedad Exceptions, se trata como una condición de excepción de regla y no se pueden agregar acciones o condiciones personalizadas integradas adicionales a la colección.

  4. Establezca la propiedad Enabled en true para que una acción, condición e excepción de regla dada sea operativa. Algunas acciones o condiciones, como la propiedad Folder, requieren que establezca propiedades adicionales en la acción o condición para guardar el objeto Rule sin que se produzca un error.

  5. Por último, llame al método Save en la colección Rules para guardar las reglas creadas o modificadas. Incluya el método Save en un bloque try…catch para controlar las excepciones.

En el ejemplo de código siguiente, CreateManagerRule implementa los pasos descritos anteriormente. CreateManagerRule primero comprueba si la propiedad CurrentUser representa un objeto ExchangeUser, lo que indica que el usuario actual es un usuario de Exchange. Si el usuario actual es un usuario de Exchange, CreateManagerRule obtiene el administrador del usuario actual llamando al método GetExchangeUserManager en el objeto ExchangeUser de la propiedad CurrentUser del objeto NameSpace. A continuación, se crea una regla de recepción para mover los mensajes recibidos a una subcarpeta de la Bandeja de entrada con las condiciones siguientes:

  • El mensaje procede del administrador del usuario.

  • El destinatario está en la línea del mensaje Para.

  • El mensaje no es una convocatoria de reunión o una actualización.

Por último, el mensaje está marcado para realizar seguimiento hoy. CreateManagerRule también ilustra el adecuado control de errores de las condiciones que podrían provocar una excepción, como que el usuario esté sin conexión o desconectado en modo caché de Exchange.

Si usa Microsoft Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente Biblioteca de objetos de Microsoft Outlook 14.0 y especificar la variable Outlook cuando importe el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción using no debe aparecer directamente antes de las funciones en el ejemplo de código, sino que debe agregarse antes de la declaración pública Class. En la siguiente línea de código se muestra cómo realizar la importación y la asignación en C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void CreateManagerRule()
{
    Outlook.ExchangeUser manager;
    Outlook.Folder managerFolder;
    Outlook.AddressEntry currentUser =
        Application.Session.CurrentUser.AddressEntry;
    if (currentUser.Type == "EX")
    {
        try
        {
            manager = currentUser.
                GetExchangeUser().GetExchangeUserManager();
        }
        catch
        {
            Debug.WriteLine("Could not obtain user's manager.");
            return;
        }
        Outlook.Rules rules;
        try
        {
            rules = Application.Session.DefaultStore.GetRules();
        }
        catch
        {
            Debug.WriteLine("Could not obtain rules collection.");
            return;
        }
        if (manager != null)
        {
            string displayName = manager.Name;
            Outlook.Folders folders =
                Application.Session.GetDefaultFolder(
                Outlook.OlDefaultFolders.olFolderInbox).Folders;
            try
            {
                managerFolder =
                    folders[displayName] as Outlook.Folder;
            }
            catch
            {
                managerFolder =
                    folders.Add(displayName, Type.Missing)
                    as Outlook.Folder;
            }
            Outlook.Rule rule = rules.Create(displayName,
                Outlook.OlRuleType.olRuleReceive);

            // Rule conditions
            // From condition
            rule.Conditions.From.Recipients.Add(
                manager.PrimarySmtpAddress);
            rule.Conditions.From.Recipients.ResolveAll();
            rule.Conditions.From.Enabled = true;

            // Sent only to me
            rule.Conditions.ToMe.Enabled = true;

            // Rule exceptions
            // Meeting invite or update
            rule.Exceptions.MeetingInviteOrUpdate.Enabled = true;

            // Rule actions
            // MarkAsTask action
            rule.Actions.MarkAsTask.MarkInterval =
                Outlook.OlMarkInterval.olMarkToday;
            rule.Actions.MarkAsTask.FlagTo = "Follow-up";
            rule.Actions.MarkAsTask.Enabled = true;

            // MoveToFolder action
            rule.Actions.MoveToFolder.Folder = managerFolder;
            rule.Actions.MoveToFolder.Enabled = true;
            try
            {
                rules.Save(true);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
    }
}

Vea también

Otros recursos

Reglas

Mostrar: