在Microsoft Outlook 2016中打开但不在MS Outlook 2013中打开时,ICS文件呈现原始HTML

时间:2019-01-31 09:37:04

标签: c# outlook-2013 outlook-2016

我有从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值,如下所示。 enter image description here

但是在MS Outlook 2013中打开了相同的文件 enter image description here

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

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

2 个答案:

答案 0 :(得分:1)

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

然后使用此内容替换其生成逻辑。

答案 1 :(得分:0)

实际问题是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。仅当不存在DESCRIPTION时,2016年才退回到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