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.AppointmentItemPrivate 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
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