ICS 文件在 Microsoft Outlook 2016 而非 MS Outlook 2013 中打开时呈原始 HTML

ICS file rendering raw HTML when opened in Microsoft Outlook 2016 but not in MS Outlook 2013

我有如下从 T4 模板创建的 ICS 文件。

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:20190129T013000Z
DTend:20190129T023000Z
SUMMARY;ENCODING=QUOTED-PRINTABLE: Hasitha Dananjaya
LOCATION;ENCODING=QUOTED-PRINTABLE: 
DESCRIPTION;CONTENT-TYPE:text/html:ENCODING=QUOTED-PRINTABLE:<p>test test</p><p>&nbsp;</p><p>&nbsp;</p><p>test line 2</p>=0D=0A=0D=0A
X-ALT-DESC;FMTTYPE=text/html:<p>test test</p><p>&nbsp;</p><p>&nbsp;</p><p>test line 2</p>
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
CATEGORIES:Business
PRIORITY:3
END:VEVENT
END:VCALENDAR

当它从 MS Outlook 2016 打开时,它显示原始 html 值如下。

但在 MS Outlook 2013 中打开了相同的文件

我确实确保两个客户端都是 运行 HTML 模式。

我只是想弄清楚这可能是什么根本原因。任何帮助表示赞赏。

进行逆向工程,从 Outlook 2016 创建文件。保存 ICS 文件并打开并查看内容。

然后用这个内容替换它的生成逻辑

实际问题出在 DESCRIPTION 和 X-ALT-DESC 字段上。

根据 RFC2445 DESCRIPTION 指定约会的纯文本正文,X-ALT-DESC 用于为 属性 和 HTML 的 DESCRIPTION 提供替代格式。

RFC - DESCRIPTION

RFC - X-ALT-DESC

不知何故,MS OUTLOOK 2013 默认读取 X-ALT-DESC,而 OUTLOOK 2016 默认读取 DESCRIPTION。 2016 仅当 DESCRIPTION 不存在时才回退到 X-ALT-DESC。

因此,修复是按如下方式保留 ICS 文件。


BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
BEGIN:VEVENT
DTSTART:20190201T013000Z
DTend:20190201T023000Z
SUMMARY;ENCODING=QUOTED-PRINTABLE: Hasitha Dananjaya
LOCATION;ENCODING=QUOTED-PRINTABLE: 
DESCRIPTION:\naaaaaaaaaaaaa\naaaaaaaaaaaaaaaaaaaaaaa\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
X-ALT-DESC;FMTTYPE=text/html:<p>aaaaaaaaaaaaa</p><p>aaaaaaaaaaaaaaaaaaaaaaa</p><p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p><p>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</p>
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
CATEGORIES:Business
PRIORITY:3
END:VEVENT
END:VCALENDAR