3

ルールに一致するアイテムを取得する必要があるアプリケーションを作成しています。

//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.
        }
    }
4

1 に答える 1

1

どのルールがどのアイテムに適用されるかを確認する唯一の方法は、各アイテムのルール条件を手動で列挙する(およびルールの例外を除外するMailItem)ことです。ルールエンジンは、を介して定義した各ルールを実行することによってRule.Execute機能します。影響を受けるアイテムをプレビューするメカニズムは提供されません。

これは、 containsサブジェクトルール( )を照合する方法を参照するための(テストされていない)例です。他のルール条件タイプも処理する必要があります。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);
            }
         }
       }
    }
}
于 2012-07-12T13:52:56.267 に答える