首页 > 解决方案 > Exchange Web 服务被任命为 MIME

问题描述

我正在尝试从 EWS 预约中获取 iCal(https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-export-items-by-using-ews -交换中)。一般来说,它工作正常,但是当约会重复出现修改事件(异常)时出现问题,它们在主重复事件上收到的 MIME 内容包含所有修改的事件:

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Israel Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1FR;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Slava:mailto:slava@domain.onmicrosoft.com
ATTACH:CID:408BD82990C789226A32C4E6F8D7E592D9DD5960@eurprd01.prod.exchangel
 abs.com
RRULE:FREQ=WEEKLY;UNTIL=20200401T050000Z;INTERVAL=1;BYDAY=WE;WKST=SU
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
SUMMARY;LANGUAGE=en-US:Recurrent 1
DTSTART;TZID=Israel Standard Time:20191009T080000
DTEND;TZID=Israel Standard Time:20191009T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20200401T060210Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:1
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
RECURRENCE-ID;TZID=Israel Standard Time:20191023T080000
SUMMARY:Recurrent 1_1
DTSTART;TZID=Israel Standard Time:20191023T080000
DTEND;TZID=Israel Standard Time:20191023T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20191112T145232Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
END:VCALENDAR

过滤掉修改后的事件并不难,因为他们已经RECURRENCE-ID区分了主重复事件和修改后的事件。那么问题是,当我尝试使用 EWS 带来来自该主服务器的所有修改事件时:https://docs.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.data.appointment.modifiedoccurrences?视图=exchange-ews-api#Microsoft_Exchange_WebServices_Data_Appointment_ModifiedOccurrences并且为每个修改的事件请求 MIME 会带来再次包含该主控的所有修改的事件的 MIME,现在过滤掉不相关的事件非常困难,因为我得到的事件太多了,例如 1 个主控和 3 个总共修改了我'将通过 MIME 10 事件(每个 MIME 请求中的 1 个主事件和 3 个已修改)获得,这些事件是重复的。请参阅下面的 MIME 示例以进行修改(它包含两次相同的事件,第二次没有某些属性,而第一次事件具有 RRULE 定义以及与 iCal RFC 相矛盾的 RECURRENCE-ID)

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Israel Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1FR;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Slava mailto:slava@domain.onmicrosoft.com
ATTACH:CID:C193186C7E6D4769FD7EB28C80DBC92443A1190C@eurprd01.prod.exchangel
 abs.com
DESCRIPTION;LANGUAGE=en-US:\n
RRULE:FREQ=WEEKLY;UNTIL=20200401T050000Z;INTERVAL=1;BYDAY=WE;WKST=SU
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
RECURRENCE-ID;TZID=Israel Standard Time:20191023T080000
SUMMARY;LANGUAGE=en-US:Recurrent 1_1
DTSTART;TZID=Israel Standard Time:20191023T080000
DTEND;TZID=Israel Standard Time:20191023T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20191112T145232Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
END:VEVENT
BEGIN:VEVENT
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
RECURRENCE-ID;TZID=Israel Standard Time:20191023T080000
SUMMARY:Recurrent 1_1
DTSTART;TZID=Israel Standard Time:20191023T080000
DTEND;TZID=Israel Standard Time:20191023T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20191112T145232Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
END:VCALENDAR

有没有办法让 MIME 中的每个约会只有一个事件?

谢谢

标签: office365exchangewebservicesicalendar

解决方案


推荐阅读