Specifying Rule Conditions
The Rules object model supports the most commonly used rule actions and conditions. Each Rule object has an Actions property that represents the rule actions for that rule, as well as a Conditions property and an Exceptions property that represent the conditions for that rule. This topic describes how the Rules object model supports rule conditions.
Rule conditions for a rule are represented by a RuleConditions collection object. A RuleConditions object has properties that correspond to each commonly used rule condition in a rule. For example, if a rule specifies two conditions - the message is important and the subject contains certain words - then the Importance and Subject properties of the rule's RuleConditions collection object will return respective rule condition objects that are enabled (RuleCondition.Enabled is True).
Conditions that are not specified in a rule will not be enabled in the corresponding RuleCondition object (RuleCondition.Enabled is False). Rule condition objects are represented by either the RuleCondition object or customized objects derived from the RuleCondition object. In the last example, the RuleConditions.Importance property will return an ImportanceRuleCondition object, and the RuleConditions.Subject property will return a TextRuleCondition object, both of which are derived from the RuleCondition object. The RuleCondition object and its derived objects have the ConditionType property that will indicate the type of the rule condition, for example, ImportanceRuleCondition.ConditionType will indicate the value olConditionImportance, and TextRuleCondition.ConditionType will indicate olConditionSubject.
Note that the Rules object model maintains partial parity with the Rules and Alerts Wizard. This means that while you can use the Wizard to create rules that specify any action and condition that you see in the Wizard, you can programmatically create rules that use some but not all of these actions and conditions. An example of a condition that the Rules object model supports for rules created by the Wizard but not for those created by the object model is messages of certain level of sensitivity. You can use the Wizard to create a rule specifying sensitivity as a condition.
Using the Rules object model, you can enumerate this kind of rule in the Rules collection - for each rule in the Rules collection, enumerate its RuleConditions collection and look for an enabled rule condition for sensitivity. In code, this would mean for each rule in the Rules collection, enumerate RuleConditions.Item(Index) using the Index from 1 to RuleConditions.Count and look for an enabled condition with RuleCondition.ConditionType equal to olConditionSensitivity. You can also enable or disable such a rule condition in a rule. However, you cannot programmatically create a rule that specifies the olConditionSensitivity condition.
The following table lists all the rule conditions supported by the Rules and Alerts Wizard, and whether each rule condition is supported when creating a rule using the Rules object model. A rule condition that is not supported in rules created by the Rules object model is supported only for programmatic enumeration and enabling or disabling in existing rules created by the Rules and Alerts Wizard. The table also shows whether the rule condition applies to rules with the olRuleReceive rule type or olRuleSend rule type, or both.
Note You cannot enable or disable a rule condition of the type olConditionOtherMachine. This type of rule condition indicates that the rule can run only on a certain computer, but the current computer is not that computer. This happens when the rule is created on one computer and the rule condition olConditionLocalMachineOnly is enabled, indicating that the rule can run only on that computer. In certain cases, olConditionLocalMachine is automatically set as a result of enabling another rule condition such as olConditionAccount. When you run the same rule on another computer, the rule will show that the condition olConditionOtherMachine is enabled.
|Condition||Constant in olRuleConditionType||Supported when creating new rules programmatically?||Apply to olRuleReceive rules?||Apply to olRuleSend rules?|
|Account is the account specified in AccountRuleCondition.Account.||olConditionAccount||Yes||Yes||Yes|
|Message is assigned any category.||olCondtionAnyCategory||Yes||Yes||Yes|
|Body contains words specified in TextRuleCondition.Text.||olConditionBody||Yes||Yes||Yes|
|Body or subject contains words specified by TextRuleCondition.Text.||olConditionBodyOrSubject||Yes||Yes||Yes|
|Message is assigned the category or categories specified in CategoryRuleCondition.Categories.||olConditionCategory||Yes||Yes||Yes|
|Message has my name in the Cc box.||olConditionCc||Yes||Yes|
|Message was received between x and y, where x and y are Integer values.||olConditionDateRange||No||Yes||Yes|
|Message is flagged for the specified action.||olConditionFlaggedForAction||No||Yes||Yes|
|Message uses the form specified in FormNameRuleCondition.FormName.||olConditionFormName||Yes||Yes||Yes|
|Sender is in the recipient list specified in ToOrFromRuleCondition.Recipients.||olConditionFrom||Yes||Yes||No|
|Message is generated from any RSS subscription.||olCondtionFromAnyRssFeed||Yes||Yes||No|
|Message is generated from a specified RSS subscription.||olCondtionFromRssFeed||Yes||Yes||No|
|Message has an attachment.||olConditionHasAttachment||Yes||Yes||Yes|
|Message is marked with the specified level of importance.||olConditionImportance||Yes||Yes||Yes|
|Rule can run only on this machine.||olConditionLocalMachineOnly||Yes||Yes||Yes|
|Message is a meeting invitation or update.||olConditionMeetingInviteOrUpdate||Yes||Yes||Yes|
|Message header contains words specified in TextRuleCondition.Text.||olConditionMessageHeader||Yes||Yes||No|
|Message does not have my name in the To box.||olConditionNotTo||Yes||Yes||No|
|Message is sent only to me.||olConditionOnlyToMe||Yes||Yes||No|
|Message is an out-of-office message.||olConditionOOF||No||Yes||No|
|Rule can run only on a specific machine that is not the current one.||olConditionOtherMachine||No||Yes||Yes|
|Document property is exactly, contains, or does not contain specified properties.||olConditionProperty||No||Yes||Yes|
|Recipient address contains words specified in TextRuleCondition.Text.||olConditionRecipientAddress||Yes||Yes||Yes|
|Sender address contains words specified in TextRuleCondition.Text.||olConditionSenderAddress||Yes||Yes||No|
|Sender is in the address list specified in AddressRuleCondition.Address.||olConditionSenderInAddressBook||Yes||Yes||No|
|Message is marked with the specified level of sensitivity.||olConditionSensitivity||No||Yes||Yes|
|Sent to recipients (To, Cc) are in the recipient list specified in ToOrFromRuleCondition.Recipients.||olConditionSentTo||Yes||Yes||Yes|
|Message size is between x and y in units of KB, where x and y are Date values. For example, "10;50" sets the size condition between 10 and 50KB.||olConditionSizeRange||No||Yes||Yes|
|Subject contains words specified in TextRuleCondition.Text.||olConditionSubject||Yes||Yes||Yes|
|My name is in the To box.||olConditionTo||Yes||Yes||No|
|Message has my name in the To or Cc box.||olConditionToOrCc||Yes||Yes||No|
|Unrecognized rule condition.||olConditionUnknown||No||Yes||No|