设置与房间相关的 ExtendedProperties
Setting ExtendedProperties related to a Room
总的来说,我对 EWS 和 Exchange 很陌生,所以不太确定什么是最好的方法。
背景
我正在尝试设置有关房间的配置信息。我希望 EWS API 为我提供了一个 Room
对象,我可以在上面添加 ExtendedProperties
,但是,房间似乎只是一个电子邮件地址。
然后我看到每个房间都有一个与之关联的 CalendarFolder
,所以我现在尝试在 CalendarFolder
中设置房间配置,这就是下面的原始问题所指的。
原题
我正在尝试使用以下方法对 CalendarFolder
进行简单更新:
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address));
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties);
myCalendar.DisplayName += "Updated";
myCalendar.Update();
但是,当我调用 .Update()
时,我得到“由于 属性 值无效,文件夹保存操作失败。”
我认为问题可能与 myCalendar
不具有日历文件夹在服务器上的所有属性有关。因此,当我更新对象时,它只发送导致验证错误的部分对象。
我将如何更新 CalendarFolder
?
进一步研究
我还偶然发现了以下确实有效的方法:
FindFoldersResults root = service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500));
foreach (var folder in root.Folders)
{
folder.DisplayName = "confRoom1";
folder.Update();
}
我确定这两种方法之间存在差异,但我不明白使用不同查询方法获得的文件夹之间的差异:
new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address));
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties);
和
service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500));
哪种方法会给出正确的 CalendarFolder
,我可以在其中为房间设置 ExtendedProperties
?
I'm sure there is a difference between the two approaches, but I don't understand the differences between the folder that I get using the different query methods:
new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address));
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties);
and
service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500));
第一个绑定到邮箱中的默认日历文件夹,第二个获取默认日历文件夹中的子文件夹。您可以重命名默认日历文件夹中的子文件夹,因为它们是用户创建的。您不能重命名邮箱中的默认日历文件夹,因为它是一个特殊文件夹。如果你想设置一个扩展 属性(你可以在一个特殊的文件夹上做,那么很容易定义它并设置它)例如
ExtendedPropertyDefinition MyCustomProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomProp", MapiPropertyType.String);
CalendarFolder CalendarFolder = CalendarFolder.Bind(service,new FolderId(WellKnownFolderName.Calendar, "user@domain.com"));
CalendarFolder.SetExtendedProperty(MyCustomProp, "My Value");
CalendarFolder.Update();
当您绑定或使用 FindItems(Exchange 不会 return 您的属性 默认)例如
PropertySet MyPropSet = new PropertySet(BasePropertySet.FirstClassProperties);
MyPropSet.Add(MyCustomProp);
CalendarFolder = CalendarFolder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "mailbox@domain.com"),MyPropSet);
Object PropValue = null;
if (CalendarFolder.TryGetProperty(MyCustomProp, out PropValue))
{
Console.WriteLine(PropValue);
}
总的来说,我对 EWS 和 Exchange 很陌生,所以不太确定什么是最好的方法。
背景
我正在尝试设置有关房间的配置信息。我希望 EWS API 为我提供了一个 Room
对象,我可以在上面添加 ExtendedProperties
,但是,房间似乎只是一个电子邮件地址。
然后我看到每个房间都有一个与之关联的 CalendarFolder
,所以我现在尝试在 CalendarFolder
中设置房间配置,这就是下面的原始问题所指的。
原题
我正在尝试使用以下方法对 CalendarFolder
进行简单更新:
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address));
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties);
myCalendar.DisplayName += "Updated";
myCalendar.Update();
但是,当我调用 .Update()
时,我得到“由于 属性 值无效,文件夹保存操作失败。”
我认为问题可能与 myCalendar
不具有日历文件夹在服务器上的所有属性有关。因此,当我更新对象时,它只发送导致验证错误的部分对象。
我将如何更新 CalendarFolder
?
进一步研究
我还偶然发现了以下确实有效的方法:
FindFoldersResults root = service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500));
foreach (var folder in root.Folders)
{
folder.DisplayName = "confRoom1";
folder.Update();
}
我确定这两种方法之间存在差异,但我不明白使用不同查询方法获得的文件夹之间的差异:
new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address));
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties);
和
service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500));
哪种方法会给出正确的 CalendarFolder
,我可以在其中为房间设置 ExtendedProperties
?
I'm sure there is a difference between the two approaches, but I don't understand the differences between the folder that I get using the different query methods:
new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address)); var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties); and
service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500));
第一个绑定到邮箱中的默认日历文件夹,第二个获取默认日历文件夹中的子文件夹。您可以重命名默认日历文件夹中的子文件夹,因为它们是用户创建的。您不能重命名邮箱中的默认日历文件夹,因为它是一个特殊文件夹。如果你想设置一个扩展 属性(你可以在一个特殊的文件夹上做,那么很容易定义它并设置它)例如
ExtendedPropertyDefinition MyCustomProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomProp", MapiPropertyType.String);
CalendarFolder CalendarFolder = CalendarFolder.Bind(service,new FolderId(WellKnownFolderName.Calendar, "user@domain.com"));
CalendarFolder.SetExtendedProperty(MyCustomProp, "My Value");
CalendarFolder.Update();
当您绑定或使用 FindItems(Exchange 不会 return 您的属性 默认)例如
PropertySet MyPropSet = new PropertySet(BasePropertySet.FirstClassProperties);
MyPropSet.Add(MyCustomProp);
CalendarFolder = CalendarFolder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "mailbox@domain.com"),MyPropSet);
Object PropValue = null;
if (CalendarFolder.TryGetProperty(MyCustomProp, out PropValue))
{
Console.WriteLine(PropValue);
}