Mit PHP Outlook-Termine auslesen

Für eine Terminplanungsgeschichte wollte ich die Termine in Outlook 2007 auslesen. Mittels MAPI und COM sollte das in PHP geschrieben auf meinem PC stattfinden, denn auf meinem PC läuft ein Apache-Server. Die Verbindung wird über die COM-Klasse hergestellt:

$outlook = new COM("outlook.application") or die("Konnte Outlook nicht instantiieren");
print "Outlook Version {$outlook->Version}, Product-Code {$outlook->ProductCode}";
$myNameSpace = $outlook->GetNamespace("MAPI");
$myNameSpace->Logon('Outlook'); // Standardanmeldung für die normale .pst-File
$myFolder = $myNameSpace->GetDefaultFolder(9)->Folders["my"]; // zweiter Kalender :)
$colItems = $myFolder->Items;
foreach($colItems as $item) {
  $data['Von']         =$item->Start;
  $data['Bis']         =$item->End;
  $data['Ort']         =$item->Location;
  $data['Betreffzeile']=$item->Subject;
  $data['Privat']      =$item->Sensitivity;
  $data['body']        =$item->Body;
  $data['LastChange']  =$item->LastModificationTime;
  var_dump($data);  // oder irgendwas anderes schlaues
  }

Natürlich gibt es noch viel mehr Felder und man kann auch auf andere Folder zugreifen (Termine ist Nummer 9). Ist bei MSDN recht gut dokumentiert. Das Ganze geht auch andersrum: aus SQL-Datenbank Termine holen und mittels PHP-Skript in Outlook einpflegen. Wenn man das LastModificationTime-Feld prüft, kann man auch zwischen SQL-Datenbank und Outlook synchronisieren: der jüngste Eintrag gewinnt :)

Etwas Kummer machen am Anfang die Fehlermeldungen und Abstürze *gg*, weil man zwar Outlook konnektieren kann, aber dann nicht weiter kommt. Es liegt an den Zugriffsrechten, die der Apache braucht, um die .pst-File zu lesen. Einfach mal den Apache-Dienst mit der eigenen User-Kennung starten, dann sieht man schon, das es geht. Allerdings sollte man sich überlegen, wie man die Rechte setzt, damit man im Falle eines Angriffs nicht alles zu weit auf gemacht hat.