Calendar:Calendar formats

From MozillaWiki
Jump to: navigation, search

This document is premature. All of it's content are subject to change.

Purpose

The purpose of this document is to provide developer resources for various calendar formats. This is done by

  1. Documenting the formats (components, properties and data types), or add references to existing documentation,
  2. Create mapping tables to ease the transformation between formats, and
  3. Provide information on code components / APIs / logic to use for conversion.

NB: 3) is not meant to duplicate http://wiki.mozilla.org/Calendar:Device_Sync - it's included here because you can handle Outlook personal folder files through several dll's

Calendar formats

iCalendar v2.0

The formats listed here are based on iCalendar RFC.

Mozilla.org/NONSGML Mozilla Calendar V1.0//EN

Microsoft Corporation//Outlook 10.0 MIMEDIR//EN

The following information is based on Outlook 2003 sp1

  • This calendar format is what you get when you save a single event in Outlook to ics.
  • The version number changes between 10.0 and 11.0 depending on some properties, that hasn't yet been determined (it's probably not important either).
  • As of Outlook 2003 sp1 only VEVENTS can be imported and exported. Only single events can be exported (by selecting an event and choose "File>Save as...". Calendar files with multiple VEVENTS can be imported.
  • Known parsing exceptions when importing Mozilla calendar 1.0:
    • Outlook needs a METHOD property in the calendar header (see the samples)
    • Outlook chokes on the VTIMEZONE components or some of it's properties.
    • VTODO doesn't raise exceptions but are simply ignored.

Sample files

Outlook personal folder file

Personal folder files are the ones with the pst extension. API's to handle personal folder files are:

  • Microsoft Outlook x.0 Object Libraries. They depend on the same version of Office x.0 Object libraries. They are very easy to use, but the backside is that they are version dependent. Through these you can access the current user's default mail profile personal folders very easily.
  • Collaboration data objects

As I understand it, these can handle stuff related to MS Exchange servers. There are two or three interesting components here. They depend on mapi32.dll and they work on a step below the Outlook Objects. Thoroughly described in Platform SDK for Windows 2003 server SP1. None of them are available for download, but they come with various MS products, as you can see here.

    • CDO for Windows 2000

Comes with W2000 and WXP. Hasn't got methods for handling appointments directly. Doesn't run on w95 - millenium OS'es

This one has most of the stuff from the outlook dll's, though it seems to have no direct support for the task folder. It comes with Outlook 98-2003, but isn't installed pr. default. It could be nice to use it to avoid version dependency, but I can't figure out if it's allowed to redistribute it.

  • Messaging API

Go ahead, write your own interfaces to the MAPI32.dll, you can probably reach all the special outlook folders through this. It is too hardcore for me to understand.

Mapping