質問

Outlook 2007 の不在時の自動応答の実際の状態をプログラムで有効または無効にする方法を知っている人はいますか?

すでにVS 2008でオブジェクトブラウザを検索し、列挙を見つけました Microsoft.Office.Interop.Outlook.OlBusyStatus しかし、これを使用するクラスやその他のものは見つかりませんでした。

どのようなアイデアでも歓迎いたします、よろしくお願いいたします

役に立ちましたか?

解決

アップデート:から適応されたサンプルコードを使用して、以下のコードを更新しました。 このブログ投稿 これは、さまざまな 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 内にセキュリティ ダイアログがポップアップされることに注意してください。Outlook オブジェクト モデルが外部 EXE からアクセスされる場合、これは正常です。

ただし、アドインからオブジェクト モデルにアクセスしている場合、上記のコードは完全には正しくありません。コンストラクターを介して新しい Outlook.Application オブジェクトを作成する代わりに、次のようにアドイン内から信頼できる Outlook.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 の記事 アドインのセキュリティに関する説明。セキュリティ ダイアログやエラーが発生した場合に役立つ可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top