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