IMAPIFolder::CreateMessage
適用対象: Outlook 2013 | Outlook 2016
新しいメッセージを作成します。
HRESULT CreateMessage(
LPCIID lpInterface,
ULONG ulFlags,
LPMESSAGE FAR * lppMessage
);
パラメーター
lpInterface
[in]新しいメッセージへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。 有効なインターフェイス識別子には、IID_IUnknown、IID_IMAPIProp、IID_IMAPIContainer、IID_IMAPIFolderが含まれます。 NULL を渡すと、メッセージ ストア プロバイダーは標準メッセージ インターフェイス IMessage : IMAPIProp を返します。
ulFlags
[in]メッセージの作成方法を制御するフラグのビットマスク。 次のフラグを設定できます。
ITEMPROC_FORCE
個人用フォルダー ストア (PST) に対して、ストアがリッスンしているクライアントに新しいメッセージの到着を通知する前に、メッセージがルール処理の対象であることを示します。 ルール処理は、Microsoft Exchange Serverではないサーバー上に作成された新しいメッセージにのみ適用されます。Exchange Serverはサーバー上のメッセージのルールを処理するためです。 そのため、メッセージを作成するプロバイダーまたはクライアントは、NON_EMS_XP_SAVEを使用して IMAPIPProp::SaveChanges でメッセージを保存する場合と組み合わせてこのフラグを渡す必要があります。これは、サーバーがExchange Serverではないことを示します。
MAPI_ASSOCIATED
作成するメッセージは、標準コンテンツ テーブルではなく、関連付けられているコンテンツ テーブルに含める必要があります。 関連付けられたメッセージは、ユーザーの操作から非表示になります。
MAPI_DEFERRED_ERRORS
CreateMessage は、作成操作が完全に完了していない場合でも成功できます。 これは、呼び出し元が新しいメッセージをすぐに使用できない可能性があることを意味します。
lppMessage
[out]新しく作成されたメッセージへのポインターへのポインター。
戻り値
S_OK
メッセージが正常に作成されました。
注釈
IMAPIFolder::CreateMessage メソッドは、ジェネリックまたは関連するコンテンツを含む新しいメッセージを作成し、エントリ識別子を割り当てます。 エントリ識別子は、メッセージ ストア プロバイダーを表す部分と、個々のメッセージを表す部分で構成されます。
実装に関するメモ
必要なすべてのメッセージ プロパティを CreateMessage で設定するか、メッセージの IMAPIProp::SaveChanges メソッドで設定するかを選択できます。 保存が成功するまで、これらのプロパティを使用できるようにする必要はありません。
関連情報を操作する方法の詳細については、「 フォルダー関連の情報テーブル と コンテンツ テーブル」を参照してください。
呼び出し側への注意
一部のメッセージ ストア プロバイダーでは、 CreateMessage が返された直後に新しいメッセージのエントリ識別子を使用できます。他のメッセージ ストア プロバイダーは、メッセージが保存されるまで可用性を遅延します。 メッセージの IMAPIProp::SaveChanges メソッドを呼び出すまで、すべてのメッセージ ストア プロバイダーが新しいメッセージのエントリ識別子を生成するわけではないため、 CreateMessage が返されるときにエントリ識別子にアクセスできない可能性があります。 また、保存が行われるまで、フォルダーのコンテンツ テーブルに新しいメッセージが含まれない場合があります。
新しいメッセージに割り当てられたエントリ識別子は、現在のメッセージ ストア内だけでなく、同時に開いているすべてのメッセージ ストアで一意であると想定します。 このルールの 1 つの例外は、メッセージ ストアの複数のエントリがプロファイルに表示される場合に発生します。 これにより、メッセージ ストアが複数回開き、エントリ識別子が複製されます。
送信メッセージを作成するには、Outbox フォルダーの IMAPIFolder::CreateMessage メソッドを 呼び出します。
メッセージを保存する前に、新しいメッセージを含むフォルダーを削除すると、結果は未定義になります。
MFCMAPI リファレンス
MFCMAPI のサンプル コードについては、次の表を参照してください。
ファイル | 関数 | コメント |
---|---|---|
FolderDlg.cpp |
CFolder::OnNewMessage |
MFCMAPI では、 IMAPIFolder::CreateMessage メソッドを使用して、新しいメッセージを作成して保存します。 |