メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

概要

カスタム プロパティ (またはフィールド) の一貫した使用を保証するために、Microsoft Office Outlook 2003 Service Pack 2 (SP2) 以降のバージョンの Outlook では、カスタム プロパティを Outlook データ ストアに導入する方法の一部が制限されています。 たとえば、Outlook 個人用フォルダー (.pst) ファイルでは、カスタム プロパティを特定の方法で導入できます。

はじめに

この記事では、次の操作を行います。

  • カスタム プロパティの概要を示します。

  • Outlook 2003 SP2 以降のバージョンの Outlook でカスタム プロパティの動作がどのように変更されたかについて説明します。

  • 新しいプロパティを作成するためのベスト プラクティスと、推奨されないいくつかのメソッドについて説明します。

詳細情報

カスタム プロパティについて

カスタム プロパティは、メッセージに詳細情報を追加するために、Outlook などの電子メール プログラムによって使用されます。 通常、この追加情報は、特定の目的のために電子メール プログラムによって使用されます。 ただし、カスタム プロパティを使用する方法は他にもあります。 たとえば、Outlook カスタム フォームを使用していて、それらのフォームにカスタム フィールドが含まれている場合、カスタム プロパティをメッセージまたはアイテムに追加できます。 カスタム プロパティは、追跡目的で詳細情報を追加するために頻繁に使用されます。 カスタム プロパティは、ユーザーが表示する必要のないデータを追加するためにも使用されます。 カスタム ソリューションでは、カスタム プロパティを通常の項目に追加することもできます。 カスタム ソリューションは、カスタム フォームを必要とせずに、プログラムによってメッセージまたはアイテムにカスタム プロパティを追加します。

カスタム プロパティは、Outlook の .msg ファイル形式と .oft ファイル形式で保持できます。 さらに、送信者が [Outlook リッチ テキスト形式を使用して 送信] オプションを使用している場合は、インターネット経由で送信される電子メール メッセージにカスタム プロパティを保持できます。 このオプションは、トランスポートニュートラル カプセル化形式 (TNEF) でメッセージの MAPI セクションをカプセル化し、メッセージを受信すると TNEF がデコードされます。

送信者は、次のシナリオでカスタム プロパティを持つ電子メールを送信できます。

  • 1 回限りのカスタム フォームが送信されます。 1 回限りのフォームでは、フォームがメッセージに埋め込まれます。 フォームは他の場所では発行されません。 1 回限りのフォームの詳細については、次の記事を参照してください。

    アイテムを使用してフォームを保存する (1 回限りのフォーム)

  • 発行されたカスタム フォームが送信されます。 この場合、フォームがメッセージに埋め込まれていないため、カスタム フォームは送信されません。 ただし、フォームで使用されたカスタム プロパティは、メッセージに引き続き含まれます。

注 カスタム プロパティを使用するコンテキストに応じて、カスタム プロパティを参照する方法は多数あります。 [フィールド選択] などの Outlook ユーザー インターフェイスでは、カスタム プロパティはユーザー定義フィールドまたはユーザー設定フィールドと呼ばれます。 Outlook オブジェクト ライブラリでは、カスタム プロパティは UserProperties コレクションの後にユーザー プロパティまたはユーザー定義プロパティと呼ばれます。 MAPI では、ユーザー設定フィールドは名前付きプロパティと呼ばれます。 MAPI には、次の操作を行うための機能が用意されています。

  • プロパティに名前を割り当てる

  • 名前を一意の識別子にマップする

  • マッピングを永続的にする

MAPI での名前付きプロパティの実装方法の詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/ms529055.aspx 注 Exchange 環境では、この記事で使用される "ストア" という用語は、メールボックス ストア全体 (データベース) を指します。 この用語は、個々のユーザーのメールボックス ストアを指しません。 organizationには、1 つ以上の Exchange メールボックス データベースが存在する可能性があります。

Outlook での動作の変更

Outlook での MAPI の実装は、カスタム プロパティを作成する方法を制御するように変更されました。 カスタム プロパティの一貫性のある使用を保証するには、organizationまたは Outlook クライアントでカスタム プロパティが既に使用されている必要があります。 カスタム プロパティが使用されているか、登録されるとすぐに、カスタム プロパティを他の Outlook クライアントまたはExchange Server実行しているサーバーに自由に送信できます。 カスタム プロパティは、インターネット経由で送信することもできます。

電子メール メッセージは通常、インターネット経由で MIME 形式で送信されます。 Outlook がインターネット電子メール メッセージを受信すると、メッセージは MAPI 表現に変換されます。 インターネット電子メール プロトコルの例を次に示します。

  • POP

  • IMAP

  • HTTP (Outlook.com)

既定では、Outlook ではインターネット メールで新しいカスタム プロパティを作成できなくなります。 受信電子メール メッセージには、既定のメール配信ストアで既に作成されているプロパティのみが保持されます。 この変更は、主に、カプセル化された TNEF (Winmail.dat) で送信されるメッセージに影響します。送信者は Outlook リッチ テキスト形式を使用して送信オプションを使用 しています。 ただし、X メッセージ ヘッダー プロパティを含むインターネット メッセージも影響を受けます。

注 Exchange organizationで送信されるカスタム プロパティを含むメッセージは、これらの変更の影響を受けません。

カスタム プロパティは、.msg ファイルと .oft ファイルにも保存できます。 ユーザーがカスタム プロパティを持つ .msg ファイルを開いた場合、メッセージの保存、転送などの際に、それらのカスタム プロパティは既定のストアに保存されません。 通常、.oft ファイルは Outlook カスタム フォームのバックアップに使用されます。 .oft ファイルでは、新しい動作はすべての種類の項目に適用されます。 カスタム フォームは開かなくなります。 代わりに、その特定のアイテムの種類の既定のフォームにメッセージが表示されます。

要約すると、この設計の変更により、次の 2 つのことが発生する可能性があります。

  • Outlook では、既存ではないカスタム プロパティは無視されます。 配信ストアにカスタム プロパティが存在しない場合、プロパティは作成されず、その値は失われます。 カスタム プロパティが配信ストアに既に存在する場合、その値は保持されます。 この変更は、次の場合に適用されます。

    • TNEF とその埋め込みメッセージを含むインターネット電子メール メッセージ。

    • S/MIME メッセージ。

    • .msg ファイルを Outlook アイテム ウィンドウにドロップしてファイルを別のアイテムに追加すると、.msg ファイルが表示されます。 この変更は、.msg ファイルを メイン Outlook ウィンドウにドロップして、ファイルをフォルダーまたは Microsoft Word ウィンドウに追加するときに、電子メール エディターとしてWordを使用する場合にも適用されます。

    • ユーザーがダブルクリックまたは右クリックして開く .msg ファイル。

  • Outlook では、1 回限りのフォーム定義は無視されます。 1 回限りのフォームでカスタム プロパティを指定し、そのカスタム プロパティが配信ストアに存在しない場合、1 回限りのフォームはレンダリングされません。 代わりに、ユーザーには、その特定のアイテムの種類の既定のフォームが表示されます。 この変更は、TNEF にカプセル化された 1 回限りのフォーム定義を含むインターネット電子メール メッセージに適用されます。 この変更は、ユーザーがダブルクリックまたは右クリックして開く .oft ファイルにも適用されます。

ベスト プラクティスとその他の方法で新しいプロパティを作成する

カスタム ソリューションの設計と開発には、さまざまな方法があります。 これらのアプローチの一部は、ベスト プラクティスと見なされます。 他のアプローチも機能する可能性がありますが、1 つ以上の理由でこれらのアプローチをお勧めしません。

ベスト プラクティス: プログラムでカスタム フィールドを追加する

さまざまな API を使用して、プログラムによって項目にカスタム フィールドを追加できます。 これを行うには、Outlook オブジェクト ライブラリ ("Outlook.Application") で UserProperties.Add メソッドを使用します。 次のコードは、このベスト プラクティスを示しています。

Set myProp = myItem.UserProperties.Add("MyPropName", olText)

CDO オブジェクト ライブラリ ("MAPI" を使用することもできます。セッション") を使用してカスタム フィールドを追加します。 詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/ms527518.aspx C++ 開発者の場合、Extended MAPI を使用して名前付きプロパティを追加できます。 詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/ms529684.aspx

ベスト プラクティス: ユーザー設定フィールドを含む発行済みのカスタム フォームを使用する

Outlook は、発行されたカスタム フォームを主に信頼します。 ただし、Outlook では、発行されていないフォームや 1 回限りのフォームは信頼されません。 これには、.oft ファイルが含まれます。 そのため、カスタム フォーム ソリューションを設計するときは、カスタム フォームを発行することを強くお勧めします。 フォームが 1 回限りのフォームにならないようにフォームを設計する必要があります。 フォームが発行されている限り、フォームは Outlook の変更の影響を受けなくなります。
 
.oft ファイルを別のストアに発行すると、既定のストアでそのストアにプロパティを作成できます。 さらに、カスタム プロパティを持つカスタム フォームを作成し、それを適切なフォーム ライブラリまたはフォルダーに発行すると、影響を受けるストアにカスタム プロパティが作成されます。

ベスト プラクティス: カスタム フォームをプログラムでデプロイする

他のユーザーが使用する Outlook カスタム フォームを開発している場合は、使用できるアプローチはほとんどありません。 使用する方法は、いくつかの要因によって異なります。 これらの要因には、フォームの種類、フォームを使用するユーザー、フォームが使用される場所などが含まれます。 通常、多くのユーザーがカスタム フォームを使用する場合は、組織フォーム ライブラリでフォームを発行することをお勧めします。 ただし、それが不可能な場合は、フォームを共有フォルダーまたは一部のユーザーの個人用フォーム ライブラリに発行できます。 Outlook オブジェクト ライブラリの CreateItemFromTemplate メソッドを使用して、プログラムによってカスタム フォームをインストールできます。 CreateItemFromTemplate メソッドを使用して .oft ファイルを開き、PublishForm メソッドを使用してフォームを発行します。 この場合、.oft ファイルはカスタム プロパティの変更の影響を受けません。

お勧めしません: ユーザーが開くための .oft ファイルをデプロイまたは送信する

Outlook のカスタム フォームを .oft ファイルとして保存できます。 これらのフォームには、フォームに機能を追加するためのカスタム フィールド、ユーザー インターフェイスの変更、およびカスタム Microsoft Visual Basic Scripting Edition (VBScript) コードを含めることができます。 Outlook には、.oft ファイルの VBScript コードの実行を妨げる機能が既に含まれていますが、.oft ファイルの使用も制限されるようになりました。 .oft ファイルにカスタム プロパティが含まれており、ユーザーがそれらのカスタム プロパティを以前に使用していない場合、カスタム プロパティはユーザーの既定のストアに含まれません。 ユーザーがファイルをダブルクリックしても、Outlook はカスタム フォームをレンダリングしません。 ただし、.oft ファイルとして保存されているカスタム フォームを Outlook で開くには、[ ファイル] をクリックし、[ 新規作成] をクリックし、[ フォームの選択] をクリックします。 その後、ファイル システムで場所を [ユーザー テンプレート] に変更し、[ 参照 ] をクリックして .oft ファイルを開くことができます。 フォームが開き、カスタム プロパティを既定のストアに保存できます。

推奨されません: AllowNamedProps レジストリ キーを使用する

組織によっては、organization全体で特定のカスタム プロパティを使用できる正当な理由がある場合があります。 複数のストアを使用する場合は、すべてのストアに一連のカスタム プロパティを確実に追加できます。 そのため、Outlook 2003 SP2 以降のバージョンでは、作成できるカスタム プロパティを指定するクライアント側レジストリ キーがサポートされています。 有効にするカスタム プロパティを指定するには、次のレジストリ キーの下にカスタム プロパティを定義します: HKEY_CURRENT_USER\Software\Microsoft\Office\<バージョン>\Outlook\AllowedNamedProps\

注 このレジストリ キーでは、<バージョン> は、使用している Outlook のバージョンのプレースホルダーです。 Outlook 2003 の場合、バージョン番号は 11.0 です。 Outlook 2007 の場合、バージョン番号は 12.0 です。 バージョン番号は、以降のバージョンの Outlook で増加します。

レジストリ内のエントリの全体的なレジストリ キー構造は次

のとおりです。 <GUID>

<プロパティ名 の>

"Kind" (dword)

"ID" (dword)
"Type" (dword) レジストリ キー構造では、次のプレースホルダーが使用されます。

  • <GUID>: プロパティ セットを指定する GUID が含まれています。 Outlook カスタム フォームで使用する Outlook ユーザー設定フィールドまたはプロパティには、すべて GUID {00020329-0000-0000-C000-000000000046} があります。 MAPI では、GUID は PS_PULIC_STRINGS と呼ばれます。 ただし、カスタム MAPI プログラムには、カスタム プロパティ用の独自の GUID が含まれる場合があります。

  • <プロパティ名>: プロパティの名前を指定します。 プロパティの名前が文字列の場合、<プロパティ名> はプロパティの実際の文字列名です。 プロパティの名前が ID の場合、このレジストリ キーの値は無視されます。 ただし、プロパティをレジストリに格納するには、プロパティに一意の名前を付ける必要があります。 Kind キーが 1 に設定されているか、 <> 0 の場合、レジストリ キー名によってプロパティの名前が決定されます。 Kind キーが 1 と等しくない場合、このレジストリ キー名は無視されます。

  • "Kind" (dword): プロパティの名前を ID または文字列で指定します。 値が 0 の場合、プロパティには ID で名前が付けられます。 名前は、ID で指定された数値です。 値が 1 の場合、プロパティには文字列で名前が付けられます。 この設定は、"Kind" が存在しない場合の既定の設定です。

  • "ID" (dword): ID によって名前が付けられたプロパティの ID 名が含まれます。 この情報は、Kind キーが 0 に設定されている場合に必要です。 Kind キーが 1 に設定されている場合、この情報は無視されます。

  • "Type" (dword): プロパティの種類を指定します。

このレジストリ キーは必須ですが、レジストリ キーは現在使用されていません。 次の表に、MAPI の種類に基づいて、このレジストリ キーの使用可能な値を示します。

MAPI の種類

説明

PT_UNSPECIFIED

0

インターフェイス用に予約されています (型は呼び出し元にとって重要ではありません)

PT_NULL

1

NULL プロパティ値

PT_I2

2

符号付き 16 ビット値

PT_LONG

3

符号付き 32 ビット値

PT_R4

4

4 バイト浮動小数点

PT_DOUBLE

5

浮動小数点 double

PT_CURRENCY

6

符号付き 64 ビット int (10 進 pt の右 4 桁の 10 進数)

PT_APPTIME

7

アプリケーション時間

PT_ERROR

10

32 ビット エラー値

PT_BOOLEAN

11

16 ビットブール値 (0 以外の true)

PT_OBJECT

13

プロパティ内の埋め込みオブジェクト

PT_I8

20

8 バイト符号付き整数

PT_STRING8

30

Null で終わる 8 ビット文字列

PT_UNICODE

31

Null で終わる Unicode 文字列

PT_SYSTIME

64

1601 年 1 月 1 日以降の期間が 100ns の FILETIME 64 ビット整数

PT_CLSID

72

OLE GUID

PT_BINARY

258

解釈されない (カウントされたバイト配列)

PT_MV_UNSPECIFIED

4096

PT_MV_NULL

4097

PT_MV_I2

4098

PT_MV_LONG

4099

PT_MV_R4

4100

PT_MV_DOUBLE

4101

PT_MV_CURRENCY

4102

PT_MV_APPTIME

4103

PT_MV_ERROR

4106

PT_MV_BOOLEAN

4107

PT_MV_OBJECT

4109

PT_MV_I8

4116

PT_MV_STRING8

4126

PT_MV_UNICODE

4127

PT_MV_SYSTIME

4160

PT_MV_CLSID

4168

PT_MV_BINARY

4354

名前付き文字列によるプロパティを設定する方法の例を次に示します。

名前: "MyStringFieldName1"

型: PT_LONG

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\AllowedNamedProps\{00020329-0000-0000-C000-000000000046}\MyStringFieldName1] "Type"=dword:00000003
名前付き ID によるプロパティを設定する方法の例を次に示します。

ID: 0x0330

型: PT_LONG

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\AllowedNamedProps\{00020329-0000-0000-C000-000000000046}\MyMAPIProp1] "Kind"=dword:00000000 "ID"=dword:00000330 "Type"=dword:00000003


これら 2 つの例では、レジストリはレジストリ エディター


で次のように表示されます。 {00020329-0000-0000-C000-000000000046}
 

MyStringFieldName1

型 = 3
MyStringFieldName2

型 = 3
{00020329-0000-0000-C000-000000000046}

MyMAPIProp1

Kind = 0
ID = 330

型 = 3
MyMAPIProp2

Kind = 0
ID = 331
型 = 3

推奨されません: プロパティを作成する機能を再度有効にする

3 つのレジストリ キーをクライアント コンピューターに展開して、カスタム プロパティのブロックを無効にし、Outlook を以前の動作に戻すことができます。 これらのレジストリ キーは、グループ ポリシーによってサポートされます。 次のレジストリ キーを使用すると、Outlook 2003 を以前の動作

に戻すことができます。 注 次のレジストリ キーは、Outlook 2007 を以前の動作に戻しません。

  • AllowTNEFtoCreateProps (HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Options\Mail] "AllowTNEFtoCreateProps"=dword:00000000): 値が 0 の場合、TNEF/MIME は Outlook 以外の新しいカスタム プロパティを作成できません。 この値が既定値です。 値が 1 の場合、TNEF/MIME は Outlook 以外の新しいカスタム プロパティを作成できます。

  • AllowMSGFilestoCreateProps: 値が 0 の場合、.msg ファイルと .oft ファイルは、Outlook 以外の新しいカスタム プロパティを作成できません。 この値が既定値です。 値が 1 の場合、.msg ファイルと .oft ファイルは、Outlook 以外の新しいカスタム プロパティを作成できます。

  • DisallowTNEFPreservation: この新しい動作への移行を容易にするために、カスタム プロパティが作成されない場合、Outlook は元の TNEF を保持します。 元の TNEF は、保存された項目のバイナリ ストリームに保存されます。 Outlook では、次のプロパティ タグを使用してストリームを保存します。

    PR_TNEF_UNPROCESSED_PROPS PROG_TAG(PT_BINARY、0x0e9C)。 HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Options\Mail] "DisallowTNEFPreservation "=dword:000000000
    レジストリ設定は、Outlook が PR_TNEF_UNPROCESSED_PROPS プロパティを作成するかどうかを制御します。

    注 PR_TNEF_UNPROCESSED_PROPS プロパティは、メッセージを添付ファイルとして別のメッセージに埋め込むと、メッセージから削除されます。 PR_TNEF_UNPROCESSED_PROPS プロパティは、メッセージを転送したり、メッセージに返信したりするときにも削除されます。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×