Crear una regla para asignar categorías a elementos de correo basándose en varias palabras del asunto
En este ejemplo se muestra cómo configurar una regla que asigna categorías a elementos de correo basándose en varias palabras del asunto.
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).
En Outlook, se pueden clasificar los elementos para que sea más fácil organizarlos y mostrarlos. El modelo de objetos de Outlook proporciona el objeto Category y la colección Categories para representar categorías. Para obtener más información sobre el objeto Category y la colección Categories de un elemento de Outlook, vea Enumerar y agregar categorías.
Una regla, representada por un objeto Rule, puede asignarse con varias condiciones. Puede obtener o establecer una matriz que represente las condiciones que se van a evaluar o las acciones que se van a completar. Por ejemplo, la propiedad Text del objeto TextRuleCondition devuelve o establece una matriz de elementos de cadena que representa el texto que se va a evaluar por la condición de la regla. Para la evaluación, debe asignar una matriz que tenga una o varias cadenas. Para evaluar varias cadenas de texto asignadas en una matriz, use la operación OR lógica.
Las propiedades que puede usar para obtener o establecer una matriz son las siguientes: Address, Categories, Categories, FormName y TextRuleCondition.Text. Para obtener más información sobre reglas, vea Crear una regla para archivar elementos de correo enviados por un administrador y marcarlos para seguimiento.
En el ejemplo siguiente, CreateTextAndCategoryRule usa el método CategoryExists para comprobar si en los elementos de correo del usuario hay categorías con el nombre "Office" u "Outlook" en la colección Categories. Si no encuentra ninguna categoría, se agregan. El ejemplo crea después una matriz de cadenas que incluyen “Office, “Outlook” y “2007”. Esta matriz representará las condiciones que se van a evaluar. Después, CreateTextAndCategoryRule crea una regla que asigna categorías examinando si hay en el asunto alguna de las condiciones de la matriz mediante la propiedad Text del objeto TextRuleCondition y la propiedad BodyOrSubject de la colección RuleConditions. Si se cumple la condición, se asignan las categorías de Office y Outlook al elemento mediante el método AssignToCategory del objeto RuleActions.
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 CreateTextAndCategoryRule()
{
if (!CategoryExists("Office"))
{
Application.Session.Categories.Add(
"Office", Type.Missing, Type.Missing);
}
if (!CategoryExists("Outlook"))
{
Application.Session.Categories.Add(
"Outlook", Type.Missing, Type.Missing);
}
Outlook.Rules rules =
Application.Session.DefaultStore.GetRules();
Outlook.Rule textRule =
rules.Create("Demo Text and Category Rule",
Outlook.OlRuleType.olRuleReceive);
Object[] textCondition =
{ "Office", "Outlook", "2007" };
Object[] categoryAction =
{ "Office", "Outlook" };
textRule.Conditions.BodyOrSubject.Text =
textCondition;
textRule.Conditions.BodyOrSubject.Enabled = true;
textRule.Actions.AssignToCategory.Categories =
categoryAction;
textRule.Actions.AssignToCategory.Enabled = true;
rules.Save(true);
}
// Determines if categoryName exists in Categories collection
private bool CategoryExists(string categoryName)
{
try
{
Outlook.Category category =
Application.Session.Categories[categoryName];
if (category != null)
{
return true;
}
else
{
return false;
}
}
catch { return false; }
}