Exchange キャッシュ モードで同期を呼び出さずに OST でメッセージを管理する

適用対象: Outlook 2013 | Outlook 2016

このトピックには、クライアントが Exchange キャッシュ モードのときにメッセージ全体を強制的にダウンロードすることなく、オフライン フォルダー ファイル (OST) 内のメッセージを管理する IMessage インターフェイスを IMsgStore::OpenEntry で取得IID_IMessageRawする方法を示す C++ のコード サンプルが含まれています。

クライアントが Exchange キャッシュ モードの場合、OST 内のメッセージは次の 2 つの状態のいずれかになります。

  • ヘッダーと本文を含むメッセージ全体がダウンロードされます。
  • ヘッダーのみを含むメッセージがダウンロードされます。

OST でメッセージの IMessage インターフェイスを要求し、クライアントが Exchange キャッシュ モードの場合は、 を使用します IID_IMessageRaw。 を使用 IID_IMessage して IMessage インターフェイスを要求し、メッセージのヘッダーのみが OST にダウンロードされている場合は、メッセージ全体のダウンロードを試みる同期を呼び出します。

または IID_IMessage を使用IID_IMessageRawして IMessage インターフェイスを要求する場合、返されるインターフェイスは使用中と同じです。 を使用IID_IMessageRawして要求された IMessage インターフェイスは、OST に存在する電子メール メッセージを返し、同期は強制されません。

次の例は、 ではなく を渡して OpenEntry メソッドを呼び出す IID_IMessageRaw 方法を IID_IMessage示しています。

HRESULT HrOpenRawMessage ( 
    LPMDB lpMSB,  
    ULONG cbEntryID,  
    LPENTRYID lpEntryID,  
    ULONG ulFlags,  
    LPMESSAGE* lpMessage) 
{ 
    ULONG ulObjType = NULL; 
 
    HRESULT hRes = lpMDB->OpenEntry( 
        cbEntryID, 
        lpEntryID, 
        IID_IMessageRaw, 
        ulFlags, 
        &ulObjType, 
        (LPUNKNOWN*) lpMessage)); 
 
   return hRes; 
} 

OpenEntry メソッドがMAPI_E_INTERFACE_NOT_SUPPORTEDエラー コードを返す場合は、メッセージ ストアが未加工モードでのメッセージへのアクセスをサポートしていないことを示します。 このような場合は、 を渡IID_IMessageして OpenEntry メソッドをもう一度試してください。

重要

IID_IMessageRaw は、現在使用しているダウンロード可能なヘッダー ファイルで定義されていない可能性があります。 この場合は、次の定義を使用してコードに追加できます。 MICROSOFT Windows ソフトウェア開発キット (Windows SDK) (SDK) ヘッダー ファイル guiddef.h で定義されているDEFINE_OLEGUID マクロを使用して、GUID シンボリック名とその値を関連付けます。 #if !defined(INITGUID) || defined(USES_IID_IMessageRaw) DEFINE_OLEGUID(IID_IMessageRaw,0x0002038A, 0, 0);> #endif

関連項目