Freigeben über


Implementieren der Namensauflösung

Gilt für: Outlook 2013 | Outlook 2016

Adressbuchanbieter sind für die Unterstützung der Namensauflösung verantwortlich, also das Zuordnen eines Eintragsbezeichners zu einem Anzeigenamen. Clients initiieren die Namensauflösung, wenn sie IAddrBook::ResolveName aufrufen, um sicherzustellen, dass jedes Mitglied der Empfängerliste einer ausgehenden Nachricht einer gültigen Adresse entspricht.

Ihr Anbieter kann die Namensauflösung wie folgt unterstützen:

  • Unterstützung der PR_ANR -Eigenschaftseinschränkung (PidTagAnr), eine Anforderung für alle Adressbuchcontainer.

  • Implementieren der IABContainer::ResolveNames-Methode , eine Option für alle Adressbuchcontainer.

Wenn Sie IABContainer::ResolveNames unterstützen möchten, versuchen Sie, eine genaue Übereinstimmung für jeden nicht aufgelösten Anzeigenamen in der ADRLIST-Struktur zu finden, die mit dem lpAdrList-Parameter übergeben wird. Sie können einen nicht aufgelösten Anzeigenamen identifizieren, da die eigenschaft PR_ENTRYID (PidTagEntryId) im Eigenschaftenwertarray im aEntries-Member der ADRLIST-Struktur fehlt. Ignorieren Sie alle Einträge, denen null Eigenschaften zugeordnet sind.

Melden Sie das Ergebnis Ihres Auflösungsversuchs im lpFlagList-Parameter , einem Array von Flags, das dem Array von Anzeigenamen in lpAdrList entspricht. Die Flags sind so positioniert, dass das erste Flag dem ersten aEntries-Member in der ADRLIST-Struktur entspricht, das zweite Flag dem zweiten aEntries-Element entspricht usw.

Es gibt drei mögliche Ergebnisse für jeden nicht aufgelösten Eintrag:

  • Es wurde keine Übereinstimmung gefunden, was bedeutet, dass keiner der Einträge in Ihren Containereinträgen mit dem Eintrag in der ADRLIST-Struktur übereinstimmt. Legen Sie den entsprechenden Eintrag im lpFlagList-Parameter auf MAPI_UNRESOLVED fest.

  • Es können mehrere Übereinstimmungen gefunden werden, was bedeutet, dass es mehrere Containereinträge gibt, die dem Eintrag in der ADRLIST-Struktur entsprechen. Legen Sie den entsprechenden Eintrag im lpFlagList-Parameter auf MAPI_AMBIGUOUS fest. Ändern Sie nicht die Anzahl der Einträge in der ADRLIST-Struktur .

  • Es kann eine genaue Übereinstimmung gefunden werden, was bedeutet, dass es nur einen Containereintrag gibt, der mit dem Eintrag in der ADRLIST-Struktur übereinstimmt. Legen Sie den entsprechenden Member im lpFlagList-Parameter auf MAPI_RESOLVED fest, und fügen Sie den Eintragsbezeichner dem Array von Eigenschaften hinzu, das dem ADRLIST-Eintrag zugeordnet ist.

Wenn Sie IABContainer::ResolveNames nicht unterstützen, geben Sie MAPI_E_NO_SUPPORT aus Ihrer Implementierung zurück.

Alle Adressbuchanbieter müssen die mehrdeutige Namensauflösung – die PR_ANR Eigenschaftseinschränkung – für die Inhaltstabellen ihrer Container unterstützen. Um diese Unterstützung bereitzustellen, behandeln Sie die PR_ANR Einschränkung in Ihrer Implementierung von IMAPITable::Restrict , indem Sie eine "beste Schätzung" der Suche durchführen, die mit einer oder mehreren bestimmten Eigenschaften übereinstimmt, die für Ihren Anbieter sinnvoll sind. Sie können die gleiche Eigenschaft oder Eigenschaften jedes Mal verwenden, z. B. PR_DISPLAY_NAME (PidTagDisplayName) oder PR_ACCOUNT (PidTagAccount) oder einem Administrator erlauben, aus einer Liste zulässiger Eigenschaften auszuwählen.

Obwohl die meisten Anbieter ihre eigene Inhaltstabellenimplementierung bereitstellen, können Sie die von MAPI bereitgestellte Implementierung über die CreateTable-Funktion anpassen. Da die MAPI-Implementierung jedoch keine Einschränkungen jeglicher Art unterstützt, müssen Sie ein Wrapperobjekt erstellen, um eine angepasste Version von Restrict einzuschließen, die den Aufruf abfängt.