2011-04-14 77 views
3

不导入.ics日历我有一个文件的.ics我用PHP手动创建类似如下:Outlook 2003中,而outlook 2007不会

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时(以及谷歌工作正常日历)。在Outlook 2003中,我收到以下错误:

“如果您尝试以iCalendar格式保存重复发行的月​​历,可能会出现此错误。为避免此错误,请将约会选项设置为阳历,而不是月历。

是否有需要在.ics文件中更改以使其与Outlook 2003一起使用?

(我没有Outlook 2003中的时刻来测试)

+1

PHP不能生成.ics文件。用PHP编写的库可以,也许你可以在你的文章中命名它? – halfdan 2011-04-14 22:39:16

+1

对不起,我没有使用库,我手动创建了ics文件。更新的问题... – Jason 2011-04-14 23:57:28

回答

3

所以,一些试验和错误与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,做的少了什么/不同的比较从我原来的。

现在一切正常。

UPDATE 一个额外的变化,我删除了VERSION:2.0位,这让所有的工作更可靠。

+0

在2003年尝试,它不起作用。出现一条消息说某些字段是无效的。尽管在2010年工作。你是否认为它适用于2010年和2007年? – csharpforevermore 2012-01-19 13:13:41

1

地址:

CALSCALE:GREGORIAN 
METHOD:PUBLISH 

为我工作。

0

删除“版本:2.0”是所有花,使第三方的.ics开会罚款,我在Outlook 2003