立即执行规则

此代码示例展示了如何使用 Rule 对象的 Execute(Object, Object, Object, Object) 方法立即执行规则。

示例

注意

下面的代码示例摘录自 Microsoft Office Outlook 2007 应用程序编程

通过对 Rule 对象调用 Execute 方法可使规则得到立即执行。 Execute 方法的参数是可选的;如果没有指定参数,则规则将应用于收件箱中的所有邮件,但不包括收件箱的子文件夹,并且将使用参数的默认值。 下表列出了 Execute 方法的可选参数的默认值。

参数

默认值

ShowProgress

False

文件夹

收件箱

IncludeSubfolders

False

RuleExecuteOption

OlRuleExecuteOption.olRuleExecuteAllMessages

可使用“规则和警报向导”来取消执行规则。 也可以通过下面的方法来取消执行规则:先将 ShowProgress 参数设置为 true,再取消进度对话框。 取消进度对话框后,Execute 便会返回错误。

在下面的代码示例中,ExecuteManagerRule 获取通过主题创建规则:存档来自经理的邮件项,并标记这些项以供跟进中的 CreateManagerRule 过程创建的规则。 然后,ExecuteManagerRule 检查规则是否不是空引用。 如果规则不是空引用,ExecuteManagerRule 便会对规则调用采用默认参数(即立即执行规则)的 Execute 方法。

注意

[!注释] 不管 Enabled 属性是否返回 true,若要立即应用规则,请使用 Rule.Execute 方法。 若要为当前会话和其他会话应用规则,请同时使用 Rule.Enabled 属性和 Save(Object) 方法。

如果使用 Visual Studio 测试此代码示例,必须先添加对 Microsoft Outlook 15.0 对象库组件的引用,并在导入 Microsoft.Office.Interop.Outlook 命名空间时指定 Outlook 变量。 不得将 using 语句直接添加到此代码示例中的函数前面,这个语句必须后跟公共类声明。 下面的代码行演示了如何在 C# 中执行导入和分配。

using Outlook = Microsoft.Office.Interop.Outlook;
private void ExecuteManagerRule()
{
    Outlook.AddressEntry currentUser =
        Application.Session.CurrentUser.AddressEntry;
    if (currentUser.Type == "EX")
    {
        try
        {
            string managerName = currentUser.
                GetExchangeUser().GetExchangeUserManager().Name;
            Outlook.Rule managerRule =
                Application.Session.DefaultStore.GetRules()[managerName];
            if (managerRule != null)
            {
                managerRule.Execute(false, Type.Missing,
                    Type.Missing, Type.Missing);
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

另请参阅