outlook - Outlook 无法识别 .ics 文件中的自定义 UID,创建新事件(和新 ID)
问题描述
我正在尝试做的事情:
我需要向我的客户发送.ics
文件,这些文件将在他们下载并双击后立即填充他们的 Outlook 日历(并选择填充他们的 Outlook 日历)。
当我在本地进行测试时,如果我将 Outlook 设置为工作,则下面的 iCalendar 代码可以正常工作offline
- 为每个事件生成一个 UID once
,我可以一次又一次地使用同一个文件,并且将not
生成一个新事件 - 因为 UID 被识别Outlook 已经存在。(所以我可以依靠 UID 来更新,也可以取消)
问题是,当我使用online
Outlook 时,每次我使用文件填充日历时都会生成一个随机 UID(112 个字符长)——即使是相同的事件——所以会生成一个重复的事件every time!
.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 文件online
(从日历中拖放),我会看到 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
我尝试了什么:
- 修改的:
METHOD:REQUEST
- 从这个帖子添加
X-WR-RELCALID:some_unique_id
- 序列似乎无济于事 - 只有在同一个文件中 2 个 UID 相同时,它才会进行排序
- 我添加
ORGANIZER;CN=Fable mail:MAILTO:fable.mail@example.com
到每个事件 - 它与 UID 具有相同的问题,并且被忽略(我的电子邮件被添加为组织者) - 我按照这篇文章
ATTENDEE:MAILTO:somemail@email.com
中的建议添加了,但似乎没有任何区别
是因为我没有使用UID的推荐标准吗?这似乎是防止碰撞的建议,仅此而已。
谢谢!
解决方案
该问题在 Office 365 的最新 Outlook 2019 上仍然存在。
甚至 Microsoft 支持人员也建议将此作为功能请求添加到 Outlook 建议框中。(见这里:https ://answers.microsoft.com/en-us/msoffice/forum/all/ics-file-does-not-update-event/38548f62-d9cd-4b85-8d3e-65217d4e8f50 )
其他人建议创建一个与 Outlook 通信并通过这种方式同步日历条目的应用程序。但在我看来,对于这样一个小问题来说,这是一个过于沉重的解决方案。
推荐阅读
- android - 如何解决在 android studio 中找不到应用程序的问题?
- javascript - 选项卡内容与其他选项卡内容重叠
- php - 如果用户 ID 在 foreach 循环 laravel 中相同,则合并表行
- .net - 关于我的 SSO 实施的一些指导 = 设置身份服务器并以编程方式使用它
- java - 是否可以将 Jfree 图表与矩阵一起使用?
- c# - 如何使用信号器将 json 对象发送到 .net 服务器
- node.js - 如何使用 PUG 引擎构建(Webpack)Node Js 项目?
- swift - 更新到iOS 13后指纹认证问题
- python - 将验证数据传递给 Keras Sequential 中的 .fit 时无法识别生成器
- mysql - 仅显示重复记录...仅在具有如此重复值的一列中?