2011-01-12 4 views
0

Je souhaite créer des propriétés utilisateur en utilisant EWS afin qu'elles apparaissent dans le sélecteur de champs dans Outlook. Je sais que c'est possible en utilisant VBA, le modèle d'objet expose une collection Item.UserProperties. Cependant, en utilisant EWS, je peux seulement accéder à Item.ExtendedProperty.Comment créer des propriétés utilisateur avec EWS ou EWS Managed API afin qu'elles apparaissent dans le sélecteur de champs

Le problème avec ExtendedProperty est qu'il n'apparaît pas dans la liste des propriétés utilisateur sélectionnables. Le problème sous-jacent est que notre application côté serveur essaie de bien fonctionner avec le client Outlook Dynamics CRM. Le client Outlook CRM utilise UserProperty pour stocker des propriétés personnalisées et notre application ne peut fonctionner qu'avec EWS et nous ne pouvons pas trouver un moyen de créer des propriétés utilisateur.

Quelques exemples de code:

Propriétés de l'utilisateur (VBA Outlook):

Dim WithEvents m_objApp Comme

Outlook.AppointmentItem

Private Sub Application_ItemLoad (ByVal Item 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

propriétés étendues (échange 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 
     }; 
    } 

Une question similaire a été posée sur un forum Microsoft il y a près d'un an, mais pas répondre encore. http://social.technet.microsoft.com/Forums/en-NZ/exchangesvrdevelopment/thread/c4d6bbb9-ba6a-4aa4-9e39-98a52b733a8c

J'espérais serait donc plus de succès :)

Merci, Jeffry

Répondre

0

Je pensais que les deux méthodes sont équivalentes aussi longtemps que vous avez utilisé publicstrings (ce qui ressemble à vous). Que diriez-vous d'utiliser MFCMAPI pour voir la différence dans ce qui est généré?

+0

J'ai vu quelques réponses possibles dans certains sites. Havent a eu le temps de le tester. Fondamentalement, a) EWS doit utiliser le guide PUBLICSTRINGS. b) vous devez avoir une boucle addin à travers tous les dossiers de pertinence et assurez-vous que userProperty est ajouté à la collection c) vous pouvez ensuite personnaliser la vue des colonnes, etc. – MJB

Questions connexes