Freigeben über


Verwalten von Nachrichten in OST ohne Aufrufen einer Synchronisierung im Exchange-Cachemodus

Gilt für: Outlook 2013 | Outlook 2016

Dieses Thema enthält ein Codebeispiel in C++, das zeigt, wie IID_IMessageRaw in IMsgStore::OpenEntry verwendet wird, um eine IMessage-Schnittstelle abzurufen, die eine Nachricht in einer Offlineordnerdatei (OST) verwaltet, ohne einen Download der gesamten Nachricht zu erzwingen, wenn sich der Client im Exchange-Cachemodus befindet.

Wenn sich ein Client im Exchange-Cache-Modus befindet, können Nachrichten in ost einen von zwei Zuständen aufweisen:

  • Die gesamte Nachricht, die den Header und den Text enthält, wird heruntergeladen.
  • Die Nachricht mit nur ihrem Header wird heruntergeladen.

Wenn Sie eine IMessage-Schnittstelle für eine Nachricht in einer OST anfordern und sich der Client im Exchange-Cachemodus befindet, verwenden Sie IID_IMessageRaw. Wenn Sie verwenden IID_IMessage , um eine IMessage-Schnittstelle anzufordern und die Nachricht nur ihren Header in ost heruntergeladen hat, rufen Sie eine Synchronisierung auf, die versucht, die gesamte Nachricht herunterzuladen.

Wenn Sie oder IID_IMessage verwendenIID_IMessageRaw, um eine IMessage-Schnittstelle anzufordern, werden die zurückgegebenen Schnittstellen identisch verwendet. Die IMessage-Schnittstelle , die mithilfe von IID_IMessageRaw angefordert wurde, gibt eine E-Mail-Nachricht zurück, wie sie im OST vorhanden ist, und die Synchronisierung wird nicht erzwungen.

Das folgende Beispiel zeigt, wie die OpenEntry-Methode aufgerufen wird, indem anstelle von IID_IMessageübergeben IID_IMessageRaw wird.

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; 
} 

Wenn die OpenEntry-Methode den MAPI_E_INTERFACE_NOT_SUPPORTED Fehlercode zurückgibt, gibt dies an, dass der Nachrichtenspeicher den Zugriff auf die Nachricht im Unformatierten Modus nicht unterstützt. Versuchen Sie es in diesem Fall erneut mit der OpenEntry-Methode , indem Sie übergeben IID_IMessage.

Wichtig

IID_IMessageRaw ist möglicherweise nicht in der herunterladbaren Headerdatei definiert, die Sie derzeit besitzen. In diesem Fall können Sie es Ihrem Code mithilfe der folgenden Definition hinzufügen. Verwenden Sie das DEFINE_OLEGUID Makro, das in der Headerdatei guiddef.h des Microsoft Windows Software Development Kit (SDK) definiert ist, um den symbolischen GUID-Namen ihrem Wert zuzuordnen. #if !defined(INITGUID) || defined(USES_IID_IMessageRaw) DEFINE_OLEGUID(IID_IMessageRaw,0x0002038A, 0, 0);> #endif

Siehe auch