4

我有一个使用 PHP 手动创建的 .ics 文件,如下所示:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:Some description here
LOCATION:Scheduled PTO
DTEND;VALUE=DATE:20101104
DTSTART;VALUE=DATE:20101103
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:PTO - 8.00 hour(s)
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
END:VEVENT
END:VCALENDAR

这在导入到 Outlook 2007(以及 Google 日历)时工作正常。在 Outlook 2003 中,我收到以下错误:

“如果您尝试以 iCalendar 格式保存周期性农历,则会出现此错误。为避免此错误,请将约会选项设置为公历而不是农历。”

我需要在 .ics 文件中进行更改以使其与 Outlook 2003 一起使用吗?

(我目前没有可以测试的 Outlook 2003)

4

4 回答 4

4

因此,在对 2003 测试系统进行了一些试验和错误之后,我发现添加了以下内容:

DTSTAMP:20101103T120000Z

允许 Outlook 2003 在不破坏 2007、iCal 或 Google 的情况下导入 .ics 文件。
我还为了好的措施将 UID 行添加到了我的最终 .ics 文件中。

因此,我的最终 .ics 文件如下所示:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:Some description here
LOCATION:Scheduled PTO
DTEND;VALUE=DATE:20101104
DTSTART;VALUE=DATE:20101103
DTSTAMP:20101103120000Z
UID: VACATIOND41D8CD98F00B204E9800998ECF8427E
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:PTO - 8.00 hour(s)
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
END:VEVENT
END:VCALENDAR

我所做的只是在 Outlook 2003 中创建了一个手动条目,将其保存为 .ics,并比较了我原来的缺失/不同之处。

现在一切正常。

更新 另外一项更改,我删除了该VERSION:2.0位,这使所有工作更加可靠。

于 2011-04-15T14:51:05.267 回答
2

添加:

CALSCALE:GREGORIAN
METHOD:PUBLISH 

这对我有用。

于 2012-06-28T21:33:50.843 回答
0

删除“VERSION:2.0”是在 Outlook 2003 中为我打开第 3 方 .ics 会议所需的全部内容。

于 2017-09-25T18:28:39.827 回答
0

确实,2003 似乎确实需要以下三个字段:在METHOD该部分之外发布的字段VEVENT,以及在该VEVENT部分中发布的字段DTSTAMPUID字段。DTSTAMP必须是有效的时间戳,因此您可以复制在 下找到的值DTSTART,并且 UID 可以是它出现的任意字符串。

METHOD:PUBLISH
DTSTAMP;VALUE=DATE-TIME:$COPY_VALUE_AT_DTSTART
UID:placeholder

我还遇到过包含ATTENDEE#字段的日历事件,例如ATTENDEE#<Client 300000 "Jane Doe">. 我删除了该行并获取了要导入的文件。所有这些格式错误的 ics 文件都失败,并显示一条消息

微软办公室展望

无法导入 vCalendar 文件。

显示帮助 >>

于 2021-11-03T03:56:25.950 回答