7

有人知道如何在 Outlook 2007 中以编程方式启用/禁用外出自动回复的实际状态吗?

已经在 VS 2008 中搜索了对象浏览器并找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus,但我没有找到任何使用它的类或其他任何东西。

任何想法表示赞赏,谢谢和问候

4

1 回答 1

3

更新:使用改编自这篇博文的示例代码更新了下面的代码,这将在更广泛的 Outlook 安装(例如同时使用 Exchange 和 PST 或访问多个 Exchange 邮箱的安装)中更好地工作。

这是在 Outlook 2007 上为我工作的代码,用于从外部(到 Outlook)EXE 设置 OOF 状态:

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.NameSpace ns = app.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

确保您没有以管理员身份运行该代码,而以非管理员身份运行 Outlook - 否则您可能会在 Vista 上遇到与安全相关的错误。

请注意,它将在 Outlook 中弹出安全对话框,以确保用户可以访问 Outlook 对象模型。当从外部 EXE 访问 Outlook 对象模型时,这是正常的。

但是,如果您从加载项访问对象模型,则上面的代码并不完全正确:您需要获取对受信任 Outlook 的引用,而不是通过构造函数创建新的 Outlook.Application 对象.Application 来自加载项内部的对象,如下所示:

Microsoft.Office.Interop.Outlook.NameSpace ns = this.Application.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

顺便说一句,有一篇关于加载项安全性的优秀MSDN 文章,如果您遇到安全对话框或错误,这可能会很有用。

于 2009-11-07T18:47:43.343 回答