IABLogon::PrepareRecips
Gilt für: Outlook 2013 | Outlook 2016
Bereitet eine Empfängerliste für die spätere Verwendung durch das Messagingsystem vor.
HRESULT PrepareRecips(
ULONG ulFlags,
LPSPropTagArray lpPropTagArray,
LPADRLIST lpRecipList
);
Parameter
ulFlags
[in] Eine Bitmaske von Flags, die den Texttyp in den zurückgegebenen Zeichenfolgen steuert. Das folgende Flag kann festgelegt werden:
- MAPI_CACHE_ONLY: Verwenden Sie nur das Offlineadressbuch, um die Namensauflösung durchzuführen. Sie können dieses Flag beispielsweise verwenden, um einer Clientanwendung das Öffnen der globalen Adressliste (GAL) im zwischengespeicherten Austauschmodus und den Zugriff auf einen Eintrag in diesem Adressbuch aus dem Cache zu ermöglichen, ohne Datenverkehr zwischen Client und Server zu erzeugen. Dieses Flag wird nur vom Exchange-Adressbuchanbieter unterstützt.
lpPropTagArray
[in] Ein Zeiger auf eine SPropTagArray-Struktur , die ein Array von Eigenschaftstags enthält, die die Eigenschaften angeben, die aktualisiert werden müssen, falls vorhanden. Der lpPropTagArray-Parameter kann NULL sein.
lpRecipList
[in] Ein Zeiger auf eine ADRLIST-Struktur , die die Empfängerliste enthält.
Rückgabewert
S_OK
Die Empfängerliste wurde erfolgreich vorbereitet.
MAPI_E_NOT_FOUND
Mindestens ein Empfänger im lpRecipList-Parameter ist nicht vorhanden.
Ein Client ruft die MAPI IAddrBook::P repareRecips-Methode auf, um einen Satz von Eigenschaften für einen oder mehrere Empfänger zu ändern oder neu anzuordnen. Die Empfänger können Teil der Empfängerliste einer ausgehenden Nachricht sein oder nicht. MAPI überträgt diesen Aufruf an die IABLogon::P repareRecips-Methode eines Adressbuchanbieters .
IABLogon::P repareRecips führt vier Standard Aufgaben aus:
Stellt sicher, dass alle Empfänger in der Adressliste, auf die der lpRecipList-Parameter verweist, über einen langfristigen Eintragsbezeichner verfügen.
Stellt sicher, dass alle Empfänger über die Eigenschaften verfügen, die im Eigenschaftenwertarray angegeben sind, auf das der lpPropTagArray-Parameter verweist.
Stellt sicher, dass die Eigenschaften aus dem Eigenschaftenwertarray vor allen anderen Eigenschaften angezeigt werden, die vor dem Aufruf vorhanden waren.
Stellt sicher, dass die Reihenfolge der Eigenschaften in der ADRENTRY-Struktur jedes Empfängers in der ADRLIST-Struktur die gleiche ist wie im Eigenschaftenwertarray.
Die ADRENTRY-Struktur im lpRecipList-Parameter enthält eine ADRENTRY-Struktur für jeden Empfänger. Jede ADRENTRY-Struktur enthält ein Array von SPropValue-Strukturen , um die Eigenschaften des Empfängers zu beschreiben. Wenn IABLogon::P repareRecips zurückgibt, enthält das SPropValue-Strukturarray für jeden Empfänger die Eigenschaften aus dem lpPropTagArray gefolgt von den anderen Eigenschaften für den Empfänger.
Hinweise für Implementierer
Die Implementierung von IABLogon::P repareRecips umfasst das Platzieren von Eigenschaften in einer bestimmten Reihenfolge, das Abrufen von Eigenschaftswerten und das Konvertieren kurzfristiger Eingabebezeichner in langfristige Eingabebezeichner. Die im lpPropTagArray-Parameter angeforderten Eigenschaften müssen sich am Anfang des Eigenschaftenwertarrays befinden, das der ADRENTRY-Struktur jedes Empfängers im lpRecipList-Parameter zugeordnet ist. Wenn keine Werte für diese Eigenschaften vorhanden sind, öffnen Sie den zugeordneten Messagingbenutzer oder die zugehörige Verteilerliste mithilfe des Eintragsbezeichners, und rufen Sie die fehlenden Eigenschaftswerte ab.
Ordnen Sie jede in lpRecipListübergebene SPropValue-Struktur separat zu, damit die Strukturen einzeln freigegeben werden können. Wenn Sie zusätzlichen Speicherplatz für eine SPropValue-Struktur zuweisen müssen, z. B. zum Speichern der Daten für eine Zeichenfolgeneigenschaft, verwenden Sie die MAPIAllocateBuffer-Funktion , um zusätzlichen Speicherplatz für das array mit dem vollständigen Eigenschaftswert zuzuweisen. Verwenden Sie die MAPIFreeBuffer-Funktion , um das ursprüngliche Eigenschaftswertarray freizugeben, und verwenden Sie dann die MAPIAllocateMore-Funktion , um den erforderlichen zusätzlichen Arbeitsspeicher zuzuweisen.
Gehen Sie wie folgt vor, um IABLogon::P repareRecips zu implementieren:
Suchen Sie nach Einträgen im lpPropTagArray-Parameter . Wenn das Eigenschaftswertarray leer ist, ist keine Arbeit erforderlich. Gibt einen Erfolgswert zurück.
Verarbeiten Sie jeden Empfänger im lpRecipList-Parameter . Es gibt ein ADRENTRY-Strukturelement für jeden Empfänger in der Liste. Ignorieren Sie die folgenden Empfängertypen:
Empfänger ohne Eintragsbezeichner im rgPropVals-Member ihrer ADRENTRY-Struktur (d. a. nicht aufgelöste Empfänger).
Empfänger mit einem Eintragsbezeichner, der nicht zu Ihrem Anbieter gehört. Diese Empfänger werden an einen anderen Adressbuchanbieter übergeben.
Öffnen Sie den Empfänger, und rufen Sie die Eigenschaften ab, die bereits für den Empfänger festgelegt sind.
Führen Sie das in lpRecipList angegebene Eigenschaftswertarray mit dem Array von Eigenschaften zusammen, das von GetProps zurückgegeben wird. Wenn dieselbe Eigenschaft in beiden Eigenschaftenarrays vorkommt, verwenden Sie den Wert aus lpRecipList.
Wenn das LpRecipList-Eigenschaftswertarray groß genug ist, um alle erforderlichen Eigenschaften zu enthalten, ersetzen Sie es einfach durch das zusammengeführte Array. Wenn das lpRecipList-Eigenschaftswertarray nicht groß genug ist, ersetzen Sie es durch ein neu zugeordnetes Array. Stellen Sie sicher, dass das neue Array in jedem seiner cValues-Member über einen aktualisierten Wert verfügt.
Wenn Sie eine oder mehrere eigenschaften im lpPropTagArray-Parameter nicht erkennen, legen Sie den Eigenschaftentyp in der ADRENTRY-Struktur des Empfängers auf PT_ERROR und den Eigenschaftswert entweder auf MAPI_E_NOT_FOUND oder auf einen anderen Wert fest, der einen spezifischeren Grund für die Nichtverfügbarkeit der Eigenschaft angibt. Informationen zu PT_ERROR finden Sie unter Eigenschaftentypen.
Hinweis
Geben Sie niemals die ADRLIST-Struktur , die in IABLogon::P repareRecips übergeben wird, neu zu, oder ändern Sie die Anzahl der Einträge.