Reputation: 15335
I have an .ics file I manually create with PHP like the following:
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
This works fine when importing into outlook 2007 (as well as Google calendar). In outlook 2003 I get the following error:
"This error can appear if you have attempted to save a recurring Lunar Calendar in iCalendar format. To avoid this error, set the appointment option to Gregorian instead of Lunar."
Is there something I need to change in the .ics file to get this to work with Outlook 2003?
(I don't have Outlook 2003 to test with at the moment)
Upvotes: 4
Views: 4736
Reputation: 8256
It does indeed appear that 2003 has need of the following three fields: the METHOD
field posted outside of the VEVENT
section, and within the VEVENT
section the DTSTAMP
and UID
fields. DTSTAMP
must be a valid timestamp so you can just copy the value found under DTSTART
, and UID can be an arbitrary string it appears.
METHOD:PUBLISH
DTSTAMP;VALUE=DATE-TIME:$COPY_VALUE_AT_DTSTART
UID:placeholder
I have also come across calendar events which include an ATTENDEE#
field, eg ATTENDEE#<Client 300000 "Jane Doe">
. I removed that line and got the file to import. All these malformed ics files failed with a message stating
Microsoft Office Outlook
Cannot import vCalendar file.
Show Help >>
Upvotes: 0
Reputation: 1
Deleting "VERSION:2.0" was all it took to make a 3rd party .ics meeting open fine for me in Outlook 2003.
Upvotes: 0
Reputation: 15335
So, after some trial and error with a 2003 test system and I found that adding the following:
DTSTAMP:20101103T120000Z
allowed Outlook 2003 to import the .ics file without breaking 2007, iCal or Google.
I also, for good measure added the UID line to my final .ics file.
So, my final .ics file looks like this:
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
All I did was create a manual entry in outlook 2003, saved it as a .ics and did a comparison on what was missing/different from my original.
All works well now.
UPDATE
One additional change, I removed the VERSION:2.0
bit and that made all work even more reliably.
Upvotes: 4