Ejecutar una regla instantáneamente
En este ejemplo se muestra cómo ejecutar una regla al instante mediante el método Execute(Object, Object, Object, Object) del objeto Rule.
Ejemplo
Nota:
El siguiente ejemplo de código es un fragmento de Programming Applications for Microsoft Office Outlook 2007 (Programación de aplicaciones para Microsoft Office Outlook 2007).
Puede hacer que una regla se ejecute inmediatamente llamando al método Execute en el objeto Rule. Los parámetros del método Execute son opcionales; si no se especifican, la regla se aplicará a todos los mensajes en la Bandeja de entrada pero no a las subcarpetas de esta bandeja y se usarán los valores predeterminados para los parámetros. En la tabla siguiente se enumeran los valores predeterminados para los parámetros opcionales del método Execute.
Parámetro |
Valor predeterminado |
---|---|
ShowProgress |
False |
Carpeta |
Bandeja de entrada |
IncludeSubfolders |
False |
RuleExecuteOption |
OlRuleExecuteOption.olRuleExecuteAllMessages |
Puede anular una ejecución de la regla mediante el Asistente para reglas y alertas. También puede cancelar una ejecución de la regla si establece el parámetro ShowProgress en true y, a continuación, cancela el cuadro de diálogo de progreso. Una vez cancelado el cuadro de diálogo de progreso, Execute devolverá un error.
En el ejemplo de código siguiente, ExecuteManagerRule obtiene la regla que se creó en el procedimiento CreateManagerRule del tema Crear una regla para archivar elementos de correo enviados por un administrador y marcarlos para seguimiento. Después, ExecuteManagerRule comprueba si la regla no es una referencia nula. Si la regla no es una referencia nula, ExecuteManagerRule llama al método Execute en la regla con los parámetros predeterminados, lo que ejecuta la regla al instante.
Nota:
Para aplicar una regla una vez, independientemente de si la propiedad Enabled devuelve true, use el método Rule.Execute. Para aplicar la regla en la sesión actual y en sesiones posteriores, use la propiedad Rule.Enabled y el método Save(Object).
Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción using no debe producirse directamente antes de las funciones en el ejemplo de código, pero debe agregarse antes de la declaración de clase pública. La siguiente línea de código muestra cómo realizar la importación y la asignación en C#.
using Outlook = Microsoft.Office.Interop.Outlook;
private void ExecuteManagerRule()
{
Outlook.AddressEntry currentUser =
Application.Session.CurrentUser.AddressEntry;
if (currentUser.Type == "EX")
{
try
{
string managerName = currentUser.
GetExchangeUser().GetExchangeUserManager().Name;
Outlook.Rule managerRule =
Application.Session.DefaultStore.GetRules()[managerName];
if (managerRule != null)
{
managerRule.Execute(false, Type.Missing,
Type.Missing, Type.Missing);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
}