Как проверить все правила, которые можно применить к mailItem в 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.
}
}
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);
}
}
}
}
}