Outlook无法识别.ics文件中的自定义UID,无法创建新事件(和新id)

Outlook无法识别.ics文件中的自定义UID,无法创建新事件(和新id),outlook,icalendar,uid,rfc5545,Outlook,Icalendar,Uid,Rfc5545,我想做的事: 我需要向我的客户发送.ics文件,这些文件将在他们下载并双击(并选择填充他们的Outlook日历)后立即填充他们的Outlook日历。 当我在本地进行测试时,如果我将Outlook设置为脱机工作,下面的iCalendar代码可以正常工作-为每个事件生成一次UID,我可以反复使用同一个文件,并且不会生成新事件,因为Outlook会将UID识别为已存在。(因此我可以依靠UID进行更新,也可以取消) 问题是,当我使用联机Outlook时,每次使用该文件填充日历时都会生成一个随机UID(1

我想做的事:
我需要向我的客户发送
.ics
文件,这些文件将在他们下载并双击(并选择填充他们的Outlook日历)后立即填充他们的Outlook日历。

当我在本地进行测试时,如果我将Outlook设置为脱机工作,下面的iCalendar代码可以正常工作-为每个事件生成一次UID
,我可以反复使用同一个文件,并且不会生成新事件,因为Outlook会将UID识别为已存在。(因此我可以依靠UID进行更新,也可以取消)

问题是,当我使用
联机
Outlook时,每次使用该文件填充日历时都会生成一个随机UID(112个字符长),即使是对于相同的事件,因此每次都会生成一个重复的事件


.ics文件示例:

BEGIN:VCALENDAR

VERSION:2.0
METHOD:PUBLISH
PRODID:-//PYVOBJECT//NONSGML Version 1//EN

BEGIN:VEVENT
UID:12345
DTSTART:20190715T020222Z
DTEND:20190715T030222Z
DESCRIPTION:Some fake summary - first event
DTSTAMP:20190715T010222Z
SEQUENCE:0
SUMMARY:this is the first event summary
END:VEVENT

BEGIN:VEVENT
UID:67890
DTSTART:20190715T040222Z
DTEND:20190715T050222Z
DESCRIPTION:Some fake summary - second event
DTSTAMP:20190715T010222Z
SEQUENCE:0
SUMMARY:this is the second event summary
END:VEVENT

END:VCALENDAR
如果我为Outlook联机时生成的第一个事件生成.ics文件(从日历中拖放),我会看到Outlook添加了一系列新字段:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Microsoft Corporation//Outlook for Mac MIMEDIR//EN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Pacific Time (US & Canada)
X-ENTOURAGE-CFTIMEZONE:US/Pacific
X-ENTOURAGE-TZID:1
BEGIN:STANDARD
RRULE:FREQ=YEARLY;INTERVAL=1;BYSECOND=0;BYMINUTE=0;BYHOUR=2;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
DTSTART:20071104T020000
END:STANDARD
BEGIN:DAYLIGHT
RRULE:FREQ=YEARLY;INTERVAL=1;BYSECOND=0;BYMINUTE=0;BYHOUR=2;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
DTSTART:20070311T020000
END:DAYLIGHT
END:VTIMEZONE

BEGIN:VEVENT
UID:<a NEW 112 character id - NOT the one I added myself>
X-ENTOURAGE_UUID:81760164-FB2C-4421-B7AC-2E1791265F0A
X-MICROSOFT-EXCHANGE-ID:<base64, 140 character id>
X-MICROSOFT-EXCHANGE-CHANGEKEY:<base64, 32 character id>
DTSTAMP:20190715T023949Z
DTSTART;TZID="Pacific Time (US & Canada)":20190714T190200
DTEND;TZID="Pacific Time (US & Canada)":20190714T200200
LAST-MODIFIED:20190715T023949Z
SUMMARY:this is the first event summary
DESCRIPTION:Some fake summary - first event
ORGANIZER:MAILTO:<the real account owner email - my email>
SEQUENCE:0
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-DISALLOW-COUNTER:TRUE
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-CDO-INSTTYPE:0
END:VEVENT

END:VCALENDAR
BEGIN:VCALENDAR
版本:2.0
PRODID:-//Microsoft Corporation//Outlook for Mac MIMEDIR//EN
方法:发布
开始:VTIMEZONE
太平洋时间(美国和加拿大)
X-ENTOURAGE-CF时区:美国/太平洋
X-ENTOURAGE-TZID:1
开始:标准
RRULE:FREQ=每年;间隔=1;秒=0;按分钟=0;按小时=2;BYDAY=1SU;按月=11
TZOFFSETFROM:-0700
佐菲托:-0800
DTSTART:20071104T020000
完:标准
开始:白天
RRULE:FREQ=每年;间隔=1;秒=0;按分钟=0;按小时=2;BYDAY=2SU;按月=3
TZOFFSETFROM:-0800
佐菲托:-0700
DTSTART:20070311T020000
完:白天
完:VTIMEZONE
开始:VEVENT
UID:
3.顺序似乎没有什么帮助-它只是用来排序同一文件中的两个UID是否相同
4.我添加了
组织者;CN=寓言邮件:MAILTO:Fable。mail@example.com
到每个事件-它与UID有相同的问题,并且被忽略(我的电子邮件作为组织者添加)
5.我添加了
attender:MAILTO:somemail@email.com
如中所述,但似乎没有任何区别

是不是因为我没有使用UID?这似乎是一个防止碰撞的建议,仅此而已。


谢谢大家!

当您通过桌面浏览器将.ics文件上载到outlook live时,我已将edge mobile设置为桌面,并在展开的左侧边栏中选择“添加日历”,然后在以下选择菜单中选择“从文件上载”。UID替换不会发生


注意:通过outlook mail输入数据取代了UID,即使它们确实符合规范中的官方建议。

此问题在Office 365的最新outlook 2019上仍然存在

甚至Microsoft支持人员也建议将此作为功能请求添加到outlook建议框中。(见此处:)

其他人建议创建一个与outlook通信并通过这种方式同步日历条目的应用程序。但在我看来,对于这样一个小问题来说,这是一个过于沉重的解决方案