使用 EWS 在 Exchange 日历中获取 Google 事件
Getting Google Event in Exchange Calendar with EWS
要通过 ICalUId
从 Exchange 日历中获取事件,您可以使用 FindItem 操作,使用 UId base64-encoded
作为扩展 属性 的值由
.
这非常适合在 Exchange 日历中创建的事件,其中 ICalUIds
如下所示:040000008200E00074C5B7101A82E00800000000A7C552582821D1010000000000000000100000002550ED442EB2CF4287FD94D10A4F331D
但是,当尝试使用 Google 日历 UId 获取事件时,这不起作用,如下所示:
tp90m1srk847n1oa4jtp9ofou0@google.com
遗憾的是,甚至在 @google.com
之前使用子字符串都行不通。
有没有办法通过 EWS 在 Exchange 日历中获取 Google 事件?
在本例中,GlobalObjectId 是使用 https://msdn.microsoft.com/en-us/library/ee157690(v=exchg.80).aspx 中定义的公式从 UID 生成的。因此,如果您只有 UID,则需要生成 GlobalObjectId 以使用您自己的算法进行搜索。例如
String UId = "k5abv4oduaidu8knel4088iq8c@google.com";
String Header = "040000008200E00074C5B7101A82E008";
String Padding = "0000000000000000000000000000000000000000";
String Prefix = "7643616C2D55696401000000";
String DataString = Prefix + BitConverter.ToString(ASCIIEncoding.ASCII.GetBytes(UId)).Replace("-", "") + "00";
String BigEndianlength = (DataString.Length / 2).ToString("X8");
String LittleEndianlength = BigEndianlength.Substring(6, 2) + BigEndianlength.Substring(4, 2) + BigEndianlength.Substring(2, 2) + BigEndianlength.Substring(0, 2);
String GlobalUidHex = Header + Padding + LittleEndianlength + DataString;
如果您随后将 HexString 转换为 Base64 字符串应该可以工作。
干杯
格伦
要通过 ICalUId
从 Exchange 日历中获取事件,您可以使用 FindItem 操作,使用 UId base64-encoded
作为扩展 属性 的值由
这非常适合在 Exchange 日历中创建的事件,其中 ICalUIds
如下所示:040000008200E00074C5B7101A82E00800000000A7C552582821D1010000000000000000100000002550ED442EB2CF4287FD94D10A4F331D
但是,当尝试使用 Google 日历 UId 获取事件时,这不起作用,如下所示:
tp90m1srk847n1oa4jtp9ofou0@google.com
遗憾的是,甚至在 @google.com
之前使用子字符串都行不通。
有没有办法通过 EWS 在 Exchange 日历中获取 Google 事件?
在本例中,GlobalObjectId 是使用 https://msdn.microsoft.com/en-us/library/ee157690(v=exchg.80).aspx 中定义的公式从 UID 生成的。因此,如果您只有 UID,则需要生成 GlobalObjectId 以使用您自己的算法进行搜索。例如
String UId = "k5abv4oduaidu8knel4088iq8c@google.com";
String Header = "040000008200E00074C5B7101A82E008";
String Padding = "0000000000000000000000000000000000000000";
String Prefix = "7643616C2D55696401000000";
String DataString = Prefix + BitConverter.ToString(ASCIIEncoding.ASCII.GetBytes(UId)).Replace("-", "") + "00";
String BigEndianlength = (DataString.Length / 2).ToString("X8");
String LittleEndianlength = BigEndianlength.Substring(6, 2) + BigEndianlength.Substring(4, 2) + BigEndianlength.Substring(2, 2) + BigEndianlength.Substring(0, 2);
String GlobalUidHex = Header + Padding + LittleEndianlength + DataString;
如果您随后将 HexString 转换为 Base64 字符串应该可以工作。
干杯 格伦