编程语言
首页 > 编程语言> > PHP-Outlook 2003不会导入.ics日历,而Outlook 2007却

PHP-Outlook 2003不会导入.ics日历,而Outlook 2007却

作者:互联网

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

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格式保存重复的农历日历,则会出现此错误.为避免此错误,请将约会选项设置为Gregorian而不是Lunar.”

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

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

解决方法:

因此,在使用2003测试系统进行了反复试验之后,我发现添加了以下内容:

DTSTAMP:20101103T120000Z

允许Outlook 2003导入.ics文件而不会破坏2007,iCal或Google.
另外,我还从总体上将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位,使所有工作更加可靠.

标签:icalendar,outlook-2003,php
来源: https://codeday.me/bug/20191102/1993619.html