2011-01-12 8 views
0

Ich möchte Benutzereigenschaften mit EWS erstellen, so dass sie in der Feldauswahl in Outlook angezeigt werden. Ich weiß, dass es mit VBA möglich ist, das Objektmodell eine Item.UserProperties-Auflistung verfügbar macht. Mit EWS kann ich jedoch nur auf Item.ExtendedProperty zugreifen.So erstellen Sie Benutzereigenschaften mit EWS oder EWS Managed API, so dass sie in Feldauswahl erscheinen

Das Problem mit ExtendedProperty ist, dass es nicht in der Liste der auswählbaren Benutzereigenschaften angezeigt wird.

Das zugrunde liegende Problem ist, dass unsere serverseitige Anwendung versucht, gut mit dem Dynamics CRM Outlook Client zu arbeiten. Der CRM Outlook-Client verwendet UserProperty zum Speichern benutzerdefinierter Eigenschaften, und unsere Anwendung kann nur mit EWS arbeiten, und wir können keine Möglichkeit zum Erstellen von Benutzereigenschaften finden.

Einige Beispiel-Code:

Benutzereigenschaften (VBA Outlook):

Dim Withevents m_objApp Als Outlook.AppointmentItem

Private Sub Application_ItemLoad (ByVal Artikel As Object)

If Item.Class = olAppointment Then 
    Set m_objApp = Item 
End If 

End Sub

Private Sub m_objApp_Open (Cancel As Boolean)

Dim oProp1 As UserProperty 
Dim oProp2 As UserProperty 

If m_objApp.UserProperties.Count = 0 Then 
    Set oProp1 = m_objApp.UserProperties.Add("crmid", olText) 
    oProp1.Value = "" 
    Set oProp2 = m_objApp.UserProperties.Add("crmLinkState", olText) 
    oProp2.Value = "0" 
    m_objApp.Save 
End If 

End Sub

Erweiterte Eigenschaften (Exchange EWS):

 CalendarItemType item = new CalendarItemType(); 
     item.MeetingTimeZone = new TimeZoneType() { TimeZoneName = _userTimeZone }; 
     item.StartSpecified = true; 
     item.Start = GetDateFromXml(node.Value); 
     item.EndSpecified = true; 
     item.End = GetDateFromXml(node.Value); 

     List<ExtendedPropertyType> properties = new List<ExtendedPropertyType>(); 
     properties.Add(CreateExtendedProperty("crmid", pending.CrmId.Value.ToString(), MapiPropertyTypeType.String)); 
     properties.Add(CreateExtendedProperty("crmLinkState", "2", MapiPropertyTypeType.Double)); 
     item.ExtendedProperty = properties.ToArray(); 

     CreateRequest createRequest = new CreateItemType() 
      { 
       Items = new NonEmptyArrayOfAllItemsType 
       { 
        Items = new ItemType[] { item } 
       }, 
       SavedItemFolderId = new TargetFolderIdType() 
       { 
        Item = new DistinguishedFolderIdType() 
        { 
         Id = folder, 
         Mailbox = new EmailAddressType() { EmailAddress = _user.MailBox } 
        } 
       }, 
       SendMeetingInvitations = CalendarItemCreateOrDeleteOperationType.SendToNone, 
       SendMeetingInvitationsSpecified = true 
      }; 

     CreateItemResponseType response = exchange.CreateItem(createRequest); 

    private ExtendedPropertyType CreateExtendedProperty(string name, string value, MapiPropertyTypeType type) 
    { 
     return new ExtendedPropertyType() 
     { 
      ExtendedFieldURI = new PathToExtendedFieldType() 
      { 
       PropertyName = name, 
       DistinguishedPropertySetId = DistinguishedPropertySetType.PublicStrings, 
       DistinguishedPropertySetIdSpecified = true, 
       PropertyType = type 
      }, 
      Item = value 
     }; 
    } 

Eine ähnliche Frage vor auf einem Microsoft-Forum fast einem Jahr gefragt wurde, aber keine antworte noch. http://social.technet.microsoft.com/Forums/en-NZ/exchangesvrdevelopment/thread/c4d6bbb9-ba6a-4aa4-9e39-98a52b733a8c

Ich hatte gehofft, wäre so erfolgreicher :)

Danke, Jeffry

Antwort

0

Ich dachte, die beiden Verfahren so lange gleichwertig waren, wie Sie publicstrings verwendet (was es sieht aus wie Sie tun). Wie wäre es mit MFCMAPI, um den Unterschied zu sehen, was generiert wurde?

+0

Ich habe einige mögliche Antworten auf einigen Websites gesehen. Havent hatte Zeit, es zu testen. Grundsätzlich a) EWS muss die PUBLICSTRINGS GUID verwenden. b) Sie müssen eine Add-In-Schleife durch alle relevanten Ordner haben und sicherstellen, dass die userProperty zur Sammlung hinzugefügt wird. c) Sie können dann die Spaltenansicht usw. anpassen. – MJB