上司からのメール アイテムにフラグを設定する

この例では、ユーザーの上司から受信した電子メール アイテムにフラグを設定する方法を示します。

注:

次のコード サンプルは、『Programming Applications for Microsoft Office Outlook 2007』からの抜粋です。

Microsoft Outlook には、フラグを設定するシステムがあり、メール アイテム、連絡先アイテムなどの Outlook アイテムに、処理対象であることを示すフラグを設定できます。 Outlook アイテムにフラグを設定すると、その Outlook アイテムに関する情報と、必要な処理に関するその他の情報が、Outlook ユーザー インターフェイスの To Do バーとカレンダー ナビゲーション モジュールに表示されます。 To Do バーは、Outlook エクスプローラー ウィンドウの一般的な構成では、縦型の作業ウィンドウとして表示されます。 To Do バーには、カレンダー ナビゲーター コントロール、今後の予定、およびフラグ設定済みアイテムが表示されます。 To Do バー 自体は拡張可能ではなく、 To Do バーの構成オプションを設定できるのは Outlook ユーザー インターフェイスからのみです。 アイテムにフラグを設定すると、タスクおよび To Do アイテムを整理して優先順位付けできます。

以下のコード例では、アイテムのグループに、指定の処理期間をマークします。 この例では、現在のユーザーの受信トレイ内にあるアイテムから、そのユーザーの上司から受信したアイテムをすべて取得します。DAV Searching and Locating (DASL) クエリを使用し、差出人が上司の名前の、"IPM.NOTE" という種類のメッセージをフィルター処理します。 次に、Importance プロパティの OlImportance 値に基づいて、すべてのアイテムにフラグを設定します。 MarkAsTask(OlMarkInterval) メソッドを使用して、重要度 "高" のすべてのアイテムに今日の処理対象のフラグを設定し、重要度 "中" のすべてのアイテムに今週の処理対象のフラグを設定します。

注:

Importance プロパティと MarkAsTask メソッドは、Item オブジェクトのメンバーです。

Visual Studio を使用してこのコード例をテストする場合、Microsoft.Office.Interop.Outlook 名前空間をインポートするときに、まず Microsoft Outlook 15.0 オブジェクト ライブラリ コンポーネントへの参照を追加し、Outlook 変数を指定します。 using ステートメントは、コード例の関数の前に直接置くことはできません。パブリッククラス宣言の前に追加する必要があります。 次のコード行は、C# でインポートおよび割り当てを行う方法を示しています。

using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoTaskFlagging()
{
    const string PR_SENT_REPRESENTING_NAME =
        "http://schemas.microsoft.com/mapi/proptag/0x0042001E";
    const string PR_MESSAGE_CLASS =
        "http://schemas.microsoft.com/mapi/proptag/0x001A001E";
    Outlook.AddressEntry currentUser =
        Application.Session.CurrentUser.AddressEntry;
    if (currentUser.Type == "EX")
    {
        Outlook.ExchangeUser manager;
        try
        {
            manager = currentUser.
                GetExchangeUser().GetExchangeUserManager();
        }
        catch
        {
            Debug.WriteLine("Could not obtain user's manager.");
            return;
        }
        if (manager != null)
        {
            string displayName = manager.Name;
            string filter = "@SQL=" + "\""
                + PR_SENT_REPRESENTING_NAME + "\""
                + " = '" + displayName + "'" + " AND " + "\""
                + PR_MESSAGE_CLASS + "\"" + " = 'IPM.NOTE'";
            Outlook.Items items =
                Application.Session.GetDefaultFolder(
                Outlook.OlDefaultFolders.olFolderInbox).
                Items.Restrict(filter);
            foreach (Outlook.MailItem mail in items)
            {
                if (mail.Importance ==
                    Outlook.OlImportance.olImportanceHigh)
                {
                    mail.MarkAsTask(Outlook.OlMarkInterval.olMarkToday);
                    mail.Save();
                }
                if (mail.Importance ==
                    Outlook.OlImportance.olImportanceNormal)
                {
                    mail.MarkAsTask(Outlook.OlMarkInterval.olMarkThisWeek);
                    mail.Save();
                }
            }
        }
    }
}

関連項目