有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

outlook无法以Java编程方式更新定期会议

我创建了一个具有以下详细信息的定期会议

BEGIN:VCALENDAR
PRODID:-//XYZ//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ORGANIZER:MAILTO:a@a.ins
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO:myMailId@abc.com
RECURRENCE-ID:20150511T093000Z
CLASS:PUBLIC
STATUS:CONFIRMED
DTSTART:20150511T093000Z
DTEND:20150511T094500Z
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;INTERVAL=1;COUNT=5
LOCATION:conference-room
TRANSP:OPAQUE
SEQUENCE:1
UID:tlc6006OJ52003
DTSTAMP:20150511T093000Z
ACTION:DISPLAY
DESCRIPTION:sample
SUMMARY:testing
PRIORITY:5
BEGIN:VALARM
TRIGGER:-PT15M
REPEAT:3
DURATION:PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

我尝试通过更改时间来更新同一个定期会议:
原始开始时间:20150511T093000Z
原始结束时间:20150511T094500Z

更新开始时间:20150511T084500Z
更新结束时间:20150511T091500Z

这是ICS的更新值

BEGIN:VCALENDAR
PRODID:-//XYZ//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ORGANIZER:MAILTO:a@a.ins
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO:myMailId@abc.com
RECURRENCE-ID:20150511T084500Z
CLASS:PUBLIC
STATUS:CONFIRMED
DTSTART:20150511T084500Z
DTEND:20150511T091500Z
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;INTERVAL=1;COUNT=5
LOCATION:conference-room
TRANSP:OPAQUE
SEQUENCE:2
UID:tlc6006OJ52003
DTSTAMP:20150511T084500Z
ACTION:DISPLAY
DESCRIPTION:sample
SUMMARY:testing
PRIORITY:5
BEGIN:VALARM
TRIGGER:-PT15M
REPEAT:3
DURATION:PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

但是我的日历没有更新到新的时间。它仍然在我的Outlook日历中显示旧的详细信息。我应该如何处理RECURRENCE-ID属性?我觉得这是造成问题的原因。两次会议的UID是相同的。我也增加了SEQUENCE。我应该处理其他事情吗


共 (2) 个答案

  1. # 1 楼答案

    您不能在同一VEVENT组件中同时具有RECURRENCE-ID和RRULE

    如果您想要构造一个简单的每周定期会议,那么只需删除RECURRENCE-ID属性

    另一个问题是DTSTAMP属性与DTSTART对齐。因此,在第二个事件中,它早于第一个事件。DTSTAMP属性应反映构建和发送VEVENT的日期和时间。因此,如果您使用新信息更新事件,DTSTAMP应该比初始时间晚

    只有在有定期会议时,才应使用RECURRENCE-ID,但有例外(例如,第三个实例的位置不同)。在https://www.rfc-editor.org/rfc/rfc5546#section-4.4.8上有一个很好的例子

  2. # 2 楼答案

    在Outlook中,主UID和异常UID是不同的,但后者是从前者派生出来的

    尝试将修改后的定期约会保存为Outlook中的ICS文件,以查看Outlook的功能