Frage

Ich versuche, alle Eigenschaftsnamen / Werte aus einem Outlook-Elemente zu erhalten. Ich habe benutzerdefinierte Eigenschaften zusätzlich zu den Standard-Outlook-Elementeigenschaften. Ich verwende Erlösung um die Outlook-Warnungen zu erhalten, aber ich habe einige Probleme mit dem GetNamesFromIDs Verfahren, das auf einem Redemption.RDOMail Artikel ....

Ich bin mit meiner Erlösung Sitzung die Nachricht zu erhalten und zu versuchen, die Nachricht zu verwenden, um die Namen aller Eigenschaften zu erhalten.

Dim rMessage as Redemption.RDOMail = _RDOSession.GetMessageFromID(EntryID, getPublicStoreID())
Dim propertyList As Redemption.PropList = someMessage.GetPropList(Nothing)
For i As Integer = 1 To propertyList.Count + 1
    Console.WriteLine(propertyList(i).ToString())
    Console.WriteLine(someMessage.GetNamesFromIDs(________, propertyList(i)))
Next

Ich bin mir nicht ganz sicher, was als erster Parameter zu GetNamesFromIDs passiert in. Die Definition von GetNamesFromIDs ist wie folgt:

GetNamesFromIDs(MAPIProp as Object, PropTag as Integer) As Redemption.NamedProperty

Ich bin mir nicht ganz sicher, was als MAPIProp Objekt übergeben werden soll. Ich sehe nicht, diese Eigenschaft in der Dokumentation verwiesen. http://www.dimastr.com/redemption/rdo/MAPIProp.htm# Eigenschaften

Jede Hilfe oder Einsicht wäre sehr dankbar.

War es hilfreich?

Lösung

Ich glaube, ich es herausgefunden. Ich habe nur VBA verwendet, so müssen Sie „denken, um“ es Einschränkungen ist, wird es nach dem gleichen Schema in VB.NET folgen.

Die Funktion Unterschrift ist diese:

Function GetNamesFromIDs(MAPIProp As Unknown, PropTag As Long) As NamedProperty

Als erster Parameter erfordert ein Objekt, das die IUnknown Schnittstelle unterstützt. Mit Blick auf die Rückzahlung docs wurde klar, dass es eine Schnittstelle mit dem Namen _MAPIProp, von dem viele andere RDO Objekte abgeleitet (IRDOMail ist unter ihnen). So muss das sein das sehr RDOMail Sie versuchen, Daten zu erhalten, aus.

das Wissen, brauchte es nur noch einen subtilen Hinweis von der Dokumentation, um es funktioniert:

  

einen prop-Tag (> = 0x80000000) gegeben,   gibt die GUID und ID der benannten   Eigenschaft.

So Eigenschaftstag >= 0x80000000 werden müssen, bedeutet dies, es wird nicht für alle Eigenschaften arbeiten, aber nur für die benutzerdefinierten diejenigen (Ich denke, das ist der Unterschied in diesem Fall korrigiert mich wenn ich falsch liege). Passing in Immobilien-Tags nicht diese Bedingung erfüllt löst eine Fehlermeldung (0x8000ffff „unerwartete Ergebnisse“).

Hier ist mein Code. Es ist VBA, so vergib mir die Hex () Fehler, wie VBAs long integer für Zahlen, die große überläuft. Ich bin sicher, dass Sie das Bild bekommen.

Sub GetNamesFromIds()

  Dim rSession As New Redemption.RDOSession
  Dim rMessage As Redemption.RDOMail
  Dim PropertyList As Redemption.PropList
  Dim PropTag As Long
  Dim EntryId As String
  Dim i As Integer

  rSession.MAPIOBJECT = Application.Session.MAPIOBJECT

  ' retrieve first random mail for this example '
  EntryId = ActiveExplorer.CurrentFolder.Items(1).EntryId
  Set rMessage = rSession.GetMessageFromID(EntryId)
  Set PropertyList = rMessage.GetPropList(0)

  For i = 1 To PropertyList.Count
    PropTag = PropertyList(i)
    If "0x" & Right("00000000" & Hex(PropTag), 8) > "0x80000000" Then
      Debug.Print
      If IsArray(rMessage.Fields(PropTag)) Then
        Debug.Print Hex(PropTag), "(Array:", UBound(rMessage.Fields(PropTag)), "items)"
      Else
        Debug.Print Hex(PropTag), "(", rMessage.Fields(PropTag), ")"
      End If
      Debug.Print "    GUID:", rMessage.GetNamesFromIds(rMessage, PropTag).GUID
      Debug.Print "      ID:", rMessage.GetNamesFromIds(rMessage, PropTag).ID
    End If
  Next

End Sub

Erster Ausschnitt aus der Ausgabe:

8041001E      (             urn:content-classes:message )
    GUID:     {00020386-0000-0000-C000-000000000046}
      ID:     content-class

Andere Tipps

Nun, für Hintergrundinformationen, der Autor schlägt etwas mit wie OutlookSpy zu sehen, wie Outlook die Eigenschaften gespeichert werden.

Mit Blick auf dieser Austausch (stellen Sie sicher durch alle Follow-up-Antworten zu lesen), ist es nicht viel mehr (in der Tat, ich denke, ein Punkt, an dem Typen MVP Outlook GetNamesFromIDs wenn er bedeutet GetIDsFromNames).

Was Sie könnten versuchen, wird mit GetIDsFromNames, um zu sehen, was dem zurückgibt, und dann das zu GetNamesFromIDs passieren verwenden.

I Redemption habe vor, nicht jedoch in dieser besonderen Art und Weise, so ist alles, was ich für Sie habe ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top