为什么' .ics / vcs'如果存在TZID参数,则无法使用office365打开文件

时间:2017-03-23 05:11:36

标签: timezone office365 icalendar

在我的应用程序中,我向各个用户发送邮件。邮件附有.ics文件。但是当用户尝试在 Office365 中打开文件时会出现错误弹出窗口

'无法查看.ICS附件,因为格式不受支持

请参阅下面我使用的.ics文件

scala> def foo(x: Int): Boolean = { if (x >= 0) true else ??? }
foo: (x: Int)Boolean

scala> foo(10)
res0: Boolean = true

scala> foo(-10)
scala.NotImplementedError: an implementation is missing
  at scala.Predef$.$qmark$qmark$qmark(Predef.scala:230)
  at .foo(<console>:11)
  ... 32 elided

scala> if (false && !foo(-10)) "boo" else "bar"
res2: String = bar

最近我添加了Timezone参数时会出现问题。但是如果我删除Timezone参数,这将会有效。

也就是说,如果我替换

BEGIN:VEVENT
DTSTAMP:20170322T064351Z
DTSTART;TZID=America/Denver:20170323T110000
DTEND;TZID=America/Denver:20170323T113000
SUMMARY:WAND: Test Summary
TZID:America/Denver
LOCATION:
UID:20170322T064351Z-1@fe80:0:0:0:0:100:7f:fffe%12
DESCRIPTION:Candidate Name: Test User\nContact Phone Number: 1256355
END:VEVENT
END:VCALENDAR

以下

DTSTART;TZID=America/Denver:20170323T110000
DTEND;TZID=America/Denver:20170323T113000

问题不会发生。但我需要添加时区。

是否需要为timezone参数添加任何其他元素? 请建议。

1 个答案:

答案 0 :(得分:0)

示例中显示的ics流似乎被截断(至少缺少BEGIN:VCALENDAR),但假设它在您的实际ics中,那么您还应该包含一个VTIMEZONE组件(在BEGIN:VEVENT之前)对应于DTSTART / DTEND中使用的TZID = America / Denver。

例如,请参阅https://tools.ietf.org/html/rfc5545#section-4

中的第二个示例