Поделиться через


Создание правила для назначения категорий почтовым элементам с учетом нескольких слов в теме

В этом примере показано, как задать правило, которое назначает категории почтовым элементам с учетом нескольких слов в теме.

Пример

Примечание.

Приведенный ниже пример кода взят из книги Программирование приложений для Microsoft Office Outlook 2007.

Элементы в Outlook можно классифицировать для упрощения организации и отображения. Объектная модель Outlook предоставляет объект Category и коллекцию Categories для представления категорий. Дополнительные сведения об объекте Category и коллекции Categories элемента Outlook см. в статье Перечисление и добавление категорий.

Правило, представленное объектом Rule, можно назначить с несколькими условиями. Можно получить или задать массив, представляющий условия для оценки или действия для выполнения. Например, свойство Text объекта TextRuleCondition возвращает или задает массив элементов строки, представляющий текст для оценки условиями правила. Необходимо назначить массив с одной или несколькими строками для оценки. Чтобы оценить несколько текстовых строк, назначенных в массиве, используйте логическую операцию OR.

Для получения или задания массива можно использовать следующие свойства: Address, Categories, Categories, FormName и TextRuleCondition.Text. Дополнительные сведения о правилах см. в статье Создание правила для передачи почтовых элементов от руководителя и их пометки к исполнению.

В следующем примере в процедуре CreateTextAndCategoryRule используется метод CategoryExists для проверки почтовых элементов пользователя на наличие категорий, содержащих названия "Office" или "Outlook" в коллекции Categories. Если категории не найдены, они будут добавлены. Затем в этом примере создается массив строк, содержащий строки "Office", "Outlook" и "2007". Этот массив представляет условия для оценки. После этого в процедуре CreateTextAndCategoryRule создается правило назначения категорий, в котором проверяется соответствие темы любому из заданных в массиве условий с использованием свойства Text объекта TextRuleCondition и свойства BodyOrSubject коллекции RuleConditions. Если условие соблюдается, категории Office и Outlook назначаются элементу с помощью метода AssignToCategory объекта RuleActions .

Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в 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; }
}

См. также