IABContainer::ResolveNames
Gilt für: Outlook 2013 | Outlook 2016
Führt die Namensauflösung für einen oder mehrere Empfängereinträge aus.
HRESULT ResolveNames(
LPSPropTagArray lpPropTagArray,
ULONG ulFlags,
LPADRLIST lpAdrList,
LPFlagList lpFlagList
);
Parameter
lpPropTagArray
[in] Ein Zeiger auf eine SPropTagArray-Struktur , die ein Array von Eigenschaftstags enthält, das die Eigenschaften beschreibt, die in die vom Anbieter zurückgegebene ADRLIST-Struktur eingeschlossen werden sollen. Um den Standardeigenschaftensatz des Anbieters anzufordern, übergeben Sie NULL im lpPropTagArray-Parameter .
ulFlags
[in] Eine Bitmaske von Flags, die den Texttyp in den zurückgegebenen Zeichenfolgen steuert. Die folgenden Flags können festgelegt werden:
EMS_AB_ADDRESS_LOOKUP
Es werden nur genaue Proxyadressen-Übereinstimmungen gefunden. Partielle Übereinstimmungen werden ignoriert. Dieses Flag wird nur vom Exchange-Adressbuchanbieter unterstützt.
MAPI_CACHE_ONLY
Für die Namensauflösung wird nur das Offlineadressbuch verwendet. Sie können beispielsweise dieses Flag 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.
MAPI_UNICODE
Die zurückgegebenen Zeichenfolgeneigenschaften liegen im Unicode-Format vor. Wenn das MAPI_UNICODE-Flag nicht festgelegt ist, liegen die Zeichenfolgen im ANSI-Format vor.
lpAdrList
[in, out] Bei der Eingabe ein Zeiger auf eine ADRLIST-Struktur , die die Liste der aufzulösden Empfänger enthält. In der Ausgabe ein Zeiger auf eine ADRLIST-Struktur , die die aufgelösten Namen enthält.
lpFlagList
[in, out] Ein Zeiger auf ein Array von Flags, die jeweils einer ADRENTRY-Struktur im lpAdrList-Parameter entsprechen, der die status des Namensauflösungsvorgangs für den Empfänger bereitstellt. Die Flags im lpFlagList-Parameter weisen dieselbe Reihenfolge wie die Einträge in lpAdrList auf. Die folgenden Flags können festgelegt werden:
MAPI_AMBIGUOUS
Der entsprechende Empfänger wurde aufgelöst, jedoch nicht in einen eindeutigen Eintragsbezeichner. Andere Container sollten nicht versuchen, diesen Empfänger aufzulösen.
MAPI_RESOLVED
Der entsprechende Empfänger wurde in einen eindeutigen Eintragsbezeichner aufgelöst. Andere Container sollten nicht versuchen, diesen Empfänger aufzulösen.
MAPI_UNRESOLVED
Der entsprechende Eintrag wurde nicht aufgelöst. Andere Container sollten versuchen, diesen Empfänger aufzulösen.
Rückgabewert
S_OK
Die Namensauflösung war erfolgreich.
MAPI_E_BAD_CHARWIDTH
Entweder wurde das flag MAPI_UNICODE festgelegt, und die Implementierung unterstützt Unicode nicht, oder MAPI_UNICODE wurde nicht festgelegt und die Implementierung unterstützt nur Unicode.
MAPI_E_NO_SUPPORT
Der Adressbuchanbieter unterstützt keine Massennamensauflösung mithilfe dieser Methode.
Hinweise
Die ResolveNames-Methode versucht, nicht aufgelöste Empfänger aus dem Array von Einträgen im lpAdrList-Parameter mit Empfängern in diesem Adressbuchcontainer abzugleichen. Ein nicht aufgelöster Empfänger verfügt in der Regel nur über die eigenschaft PR_DISPLAY_NAME (PidTagDisplayName) und möglicherweise über einige andere Eigenschaften. Ein nicht aufgelöster Empfänger verfügt nicht über die eigenschaft PR_ENTRYID (PidTagEntryId), und das entsprechende Flag im lpFlagList-Parameter ist auf MAPI_UNRESOLVED festgelegt. Umgekehrt verfügt ein aufgelöster Empfänger immer über mindestens die eigenschaft PR_ENTRYID sowie mehrere andere Eigenschaften wie PR_EMAIL_ADDRESS (PidTagEmailAddress), PR_DISPLAY_NAME und PR_ADDRTYPE (PidTagAddressType).
Die Namensauflösung beginnt in der Regel, wenn ein Client die IAddrBook::ResolveName-Methode aufruft. Outlook MAPI antwortet, indem die ResolveNames-Methode jedes Adressbuchcontainers aufgerufen wird, der im Adressbuchsuchpfad enthalten ist, der durch die eigenschaft PR_AB_SEARCH_PATH (PidTagAbSearchPath) angegeben wird. Die Einträge im lpAdrList-Parameter enthalten Empfänger, die bereits aufgelöst wurden, da sie sich in Containern befinden, für die MAPI bereits ResolveNames aufgerufen hat, da die Einträge früher im Suchpfad angezeigt werden.
Jeder Container versucht, die nicht aufgelösten Einträge aufzulösen, indem er den Anzeigenamen des Empfängers mit dem Anzeigenamen eines seiner Einträge abgleicht. Wenn eine eindeutige Übereinstimmung gefunden wird, fügt ResolveNames dem entsprechenden Eintrag in der ausgehenden ADRLIST-Struktur die PR_ENTRYID-Eigenschaft und andere Eigenschaften hinzu, die im lpPropTagArray-Parameter enthalten sind. ResolveNames legt dann den Eintrag im lpFlagList-Parameter auf MAPI_RESOLVED fest. Der in der PR_ENTRYID-Eigenschaft gespeicherte Eintragsbezeichner kann kurz- oder langfristig sein.
Nachdem alle Container im Suchpfad versucht haben, den Namensauflösungsprozess durchzuführen, öffnet MAPI nach Möglichkeit ein Dialogfeld, um den Benutzer zur Unterstützung bei der Lösung verbleibender Konflikte aufzufordern.
Clients können auch die zurückgegebene ADRLIST-Struktur in Aufrufen der IMessage::ModifyRecipients-Methode verwenden.
Hinweise für Implementierer
Sie müssen die Namensauflösung mit der ResolveNames-Methode nicht unterstützen. Stattdessen oder zusätzlich können Sie sie mit der Einschränkung der eigenschaft PR_ANR (PidTagAnr) unterstützen. Wenn Sie sich für die Namensauflösung auf die PR_ANR-Einschränkung verlassen möchten, können Sie MAPI_E_NO_SUPPORT zurückgeben. For more information, see Implementieren der Namensaufl�sung.
Legen Sie den Flageintrag eines Empfängers im lpFlagList-Parameter auf MAPI_UNRESOLVED fest, wenn der Empfänger keinem der Empfänger des Containers entspricht.
Wenn ein Empfänger mit mehreren Empfängern übereinstimmt, legen Sie sein Flag auf MAPI_AMBIGUOUS fest, und ändern Sie die ADRENTRY-Struktur nicht.
MAPI erfordert bestimmte Eigenschaften für Empfänger, die in der Empfängerliste einer Nachricht enthalten sind. Sie können sie als Teil des Namensauflösungsprozesses in die ADRENTRY-Struktur einschließen oder warten, bis MAPI sie mit Aufrufen der Methoden IAddrBook::P repareRecips und IMAPISupport::ExpandRecips anfordert . Sie können diese zusätzlichen Aufrufe eliminieren und die Leistung verbessern, indem Sie die folgenden Eigenschaften in die ADRENTRY-Strukturen aller aufgelösten Empfänger einschließen:
PR_ADDRTYPE
PR_DISPLAY_NAME
PR_EMAIL_ADDRESS
PR_ENTRYID
PR_OBJECT_TYPE (PidTagObjectType)
PR_SEARCH_KEY (PidTagSearchKey)
PR_TRANSMITABLE_DISPLAY_NAME (PidTagTransmittableDisplayName)
Wenn einige der Eigenschaften im lpPropTagArray-Parameter nicht verfügbar sind ( in der Regel, weil der Containereintrag die Eigenschaften nicht unterstützt und sie nicht im ADRENTRY-Member des Empfängers in der ADRLIST-Struktur enthalten sind ), legen Sie den Eigenschaftentyp jeder nicht verfügbaren Eigenschaft auf PT_ERROR fest.
Entfernen Sie keine Eigenschaften aus der ADRENTRY-Struktur eines aufgelösten Empfängers.
Wenn Sie eine ADRENTRY-Struktur ersetzen müssen, anstatt sie zu ändern, geben Sie zuerst die ursprüngliche ADRENTRY-Struktur frei, indem Sie die MAPIFreeBuffer-Funktion aufrufen und dann die Ersatzstruktur ADRENTRY mit MAPIAllocateBuffer zuordnen.