java ews appointment_如何使用 EWS 或 EWS 托管 API 创建用户属性,以便它们出现在字段选择器中...

博客讨论了如何在不使用VBA的情况下,通过Exchange Web Services (EWS) 创建Outlook用户属性,以便这些属性能显示在字段选择器中。由于Dynamics CRM Outlook客户端依赖UserProperty存储自定义属性,但EWS仅提供ExtendedProperty,作者寻求一种方法使ExtendedProperty在Outlook中可见。提供的代码示例展示了如何使用VBA创建用户属性以及如何使用EWS创建扩展属性,但问题在于EWS创建的属性无法像UserProperty那样在Outlook中直接访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想使用 EWS 创建用户属性,以便它们出现在 Outlook 的字段选择器中。我知道使用 VBA 是可能的,对象模型公开了 Item.UserProperties 集合。但是,使用 EWS 我只能访问 Item.ExtendedProperty。

ExtendedProperty 的问题在于,它没有出现在可选用户属性列表中。

根本问题是我们的 server-side 应用程序尝试与 Dynamics CRM Outlook 客户端很好地协同工作。 CRM Outlook 客户端使用 UserProperty 来存储自定义属性,并且我们的应用程序只能与 EWS 一起使用,我们找不到创建用户属性的方法。

一些示例代码:

用户属性(VBA Outlook):

昏暗的事件 m_objApp 和 Outlook.AppointmentItem

私人 Sub Application_ItemLoad(ByVal 项作为对象)

If Item.Class = olAppointment Then

Set m_objApp = Item

End If

结束子

私人 Sub m_objApp_Open(Cancel 为布尔值)

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

结束子

扩展属性(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 properties = new List();

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

};

}

我希望 SO 会更成功:)

谢谢,杰弗里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值