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