Freigeben über


Abrufen von MAPI-Eigenschaften

Gilt für: Outlook 2013 | Outlook 2016

Wenn ein Client oder Dienstanbieter eine Eigenschaft aus einem Objekt abruft, stellt das Objekt den Wert, den Typ und den Bezeichner der Eigenschaft zur Verfügung.

Clients und Dienstanbieter können die Eigenschaften eines Objekts abrufen, indem sie eine der folgenden Aktionen aufrufen:

IMAPIProp::GetProps

IMAPIProp::OpenProperty

HrGetOneProp

Die GetProps-Methode wird verwendet, um eine oder mehrere Eigenschaften abzurufen, die keine spezialisierte oder alternative Schnittstelle für den Zugriff benötigen. Dies bedeutet, dass die mit GetProps verfügbaren Eigenschaften klein sind, z. B. ganze Zahlen und boolesche Werte.

So rufen Sie mehrere Eigenschaften ab

  1. Ordnen Sie eine SPropTagArray-Struktur zu, die groß genug ist, um die Anzahl der abzurufenden Eigenschaften aufzunehmen.

  2. Legen Sie den cValues-Member der SPropTagArray-Struktur auf die Anzahl der abzurufenden Eigenschaften fest, und legen Sie jedes aulPropTag-Element auf den Bezeichner und Typ einer der Zieleigenschaften fest, wenn möglich. Wenn der Typ unbekannt ist, legen Sie ihn auf PT_UNSPECIFIED fest. Wenn sowohl der Typ als auch der Bezeichner unbekannt sind, suchen Sie diese Informationen, indem Sie IMAPIProp::GetPropList aufrufen. GetPropList gibt ein Eigenschaftentagarray mit allen unterstützten Eigenschaften des Objekts zurück. Wenn nur ein Eigenschaftenname verfügbar ist, rufen Sie IMAPIProp::GetIDsFromNames auf, um auf den zugeordneten Bezeichner zuzugreifen.

  3. Rufen Sie IMAPIProp::GetProps auf, um die Eigenschaft oder Eigenschaften zu öffnen.

Die OpenProperty-Methode wird verwendet, um größere Eigenschaften zu öffnen, die eine alternative Schnittstelle wie IStream oder IMAPITable für den Zugriff erfordern. OpenProperty wird in der Regel zum Öffnen großer Zeichenfolgen-, Binär- und Objekteigenschaften verwendet und kann jeweils nur eine Eigenschaft öffnen. Aufrufer übergeben den Bezeichner der zusätzlichen Schnittstelle, die als einer der Eingabeparameter erforderlich ist.

Zu den gängigen Verwendungsmöglichkeiten von OpenProperty gehören das Öffnen PR_BODY (PidTagBody), die Eigenschaft, die den Text einer textbasierten Nachricht enthält, PR_ATTACH_DATA_OBJ (PidTagAttachDataObject), die Eigenschaft, die ein OLE-Objekt oder eine Nachrichtenanlage enthält, und PR_CONTAINER_CONTENTS (PidTagContainerContents), die Eigenschaft, die eine Ordner- oder Adressbuchcontainerinhaltstabelle enthält.

Abhängig von der -Eigenschaft wird eine andere Schnittstelle von OpenProperty angefordert. IStream, eine Schnittstelle, die das Lesen und Schreiben von Eigenschaftsdaten als Bytestrom ermöglicht, wird in der Regel für den Zugriff auf PR_BODY verwendet. Für den Zugriff auf PR_ATTACH_DATA_OBJ kann entweder IMessage oder IStream verwendet werden. Eingebettete Nachrichtenanlagen, die Standardnachrichten sind, verwenden IMessage , während Nachrichten im TNEF-Format IStream verwenden. Da PR_CONTAINER_CONTENTS ein Tabellenobjekt ist, wird mit IMAPITable darauf zugegriffen.

So rufen Sie die PR_ATTACH_DATA_BIN-Eigenschaft einer Anlage ab

  1. Rufen Sie die OpenStreamOnFile-Funktion auf, um einen Stream für die Datei zu öffnen.

  2. Rufen Sie die IMAPIProp::OpenProperty-Methode der Nachricht auf, um die eigenschaft PR_ATTACH_DATA_BIN (PidTagAttachDataBinary) mit der IStream-Schnittstelle abzurufen. Legen Sie sowohl die flags MAPI_MODIFY als auch MAPI_CREATE fest.

  3. Ordnen Sie eine STATSTG-Struktur zu, und übergeben Sie sie in einem Aufruf an die IStream::Stat-Methode des Dateistreams, um deren Größe zu bestimmen. Eine weitere Möglichkeit zum Bestimmen der Streamgröße besteht darin, IStream::Seek mit dem Flag STREAM_SEEK_END aufzurufen.

  4. Rufen Sie die IStream::CopyTo-Methode des Datenstroms auf, um die Daten aus dem Datenstrom der Datei in den Anlagenstream zu kopieren.

  5. Wenn der Kopiervorgang abgeschlossen ist, geben Sie beide Streams frei, indem Sie ihre IUnknown::Release-Methoden aufrufen.

Wenn IStream für den Zugriff auf Eigenschaften verwendet wird, senden einige Dienstanbieter automatisch die Größe der Eigenschaft mit dem Stream zurück. Das Aufrufen von OpenProperty mit dem MAPI_DEFERRED_ERRORS-Flag kann das Öffnen der Eigenschaft und die Rückgabe der Streamgröße verzögern. Wenn IStream::Stat aufgerufen wird, um diese Größe nach OpenProperty mit festgelegtem MAPI_DEFERRED_ERRORS-Flag abzurufen, wird die Leistung beeinträchtigt, da diese Aufrufsequenz einen zusätzlichen Remoteprozeduraufruf erzwingt. Um leistungseinbußen zu vermeiden, können Clients eine beliebige MAPI-Methode zwischen den Aufrufen von OpenProperty und Stat aufrufen.

Die HrGetOneProp-Funktion wie OpenProperty öffnet jeweils eine Eigenschaft. HrGetOneProp sollte nur verwendet werden, wenn das Zielobjekt auf dem lokalen Computer vorhanden ist. Wenn das Zielobjekt nicht lokal verfügbar ist, kann die wiederholte Verwendung von HrGetOneProp zu mehreren Remoteprozeduraufrufen und einer Leistungsbeeinträchtigung führen.

Aufrufer, die mehrere Eigenschaften benötigen, können entweder HrGetOneProp oder OpenProperty in einer Schleife aufrufen oder getProps aufrufen. Das einmalige Aufrufen von GetProps ist effizienter.

Hinweis

Sichere Eigenschaften sind nicht automatisch mit anderen Eigenschaften in einem GetProps-, HrGetOneProp- oder GetPropList-Aufruf verfügbar. Sichere Eigenschaften müssen explizit mit ihren Eigenschaftenbezeichnern angefordert werden.

Siehe auch

Übersicht über die MAPI-Eigenschaft