Как проверить все правила, которые можно применить к элементу почты в Outlook

Я пишу приложение, которое должно получить элементы, которые можно сопоставить с правилами.

//new messages goes here
void items_ItemAdd(object Item)
    {
        //all rules
        Rules rules = Application.Session.DefaultStore.GetRules();

        Outlook.MailItem mail = (Outlook.MailItem)Item;

        if (mail != null)
        {
            // I need to find out if mail matches with one of the rule. And handle in an appropriate way.
        }
    }

person Alexandr    schedule 12.07.2012    source источник


Ответы (1)


Единственный способ проверить, какие правила применяются к тем или иным элементам, — перечислить правило. Условия (и за исключением исключений из правил ) вручную для каждого MailItem. Механизм правил работает, выполняя каждое правило, которое вы определили через Rule.Execute. не предоставляет механизм для предварительного просмотра затронутых элементов.

Ниже приведен (непроверенный) пример для справки о том, как сопоставить правило содержания темы (olConditionSubject). Вам также потребуется обрабатывать другие типы условий правила.

if (mail != null)
{
    foreach (Outlook.Rule rule in rules)
    {
       foreach (Outlook.RuleCondition condition in rule.Conditions)
       {
         if (condition is TextRuleCondition)
         {
            Outlook.TextRuleCondition trc = condition as Outlook.TextRuleCondition;
            if (trc.ConditionType == Outlook.OlRuleConditionType.olConditionSubject)
            {
              // TODO: handle Rule.Exceptions conditions
              bool containsSubject = mail.Subject.Contains(trc.Text);
            }
         }
       }
    }
}
person SliverNinja - MSFT    schedule 12.07.2012
comment
Усложняйте Rule Conditions — вам придется пройти каждое условие, которое вы хотите поддерживать, 1 на 1. Я могу добавить один пример для справки. - person SliverNinja - MSFT; 12.07.2012
comment
См. пример выше. Вы также можете проверить, включено ли правило Rule.Enabled и следуйте порядку выполнения правила Rule.ExecutionOrder - person SliverNinja - MSFT; 12.07.2012
comment
Могу ли я как-то перебрать все правила. Условия? или мне нужно написать много кода для конкретного случая. - person Alexandr; 12.07.2012