Torsten: Auf Outlook-Termine zugreifen

Hallo,

ist es möglich mit PHP auf die Termine in Outlook zuzugreifen - ohne den Weg des Exportierens?

Gruss Torsten

  1. Hallo,

    ist es möglich mit PHP auf die Termine in Outlook zuzugreifen - ohne den Weg des Exportierens?

    An was hast Du dabei gedacht?
    So eine Art DB Zugriff?
    Ich denke eher es geht nicht.
    Es sei den outlook (Oder Outlook Express?) haben in irgendeiner Form eine ODBC Schnittstelle.

    Ich arbeite aber nicht mit Outlook deshalb ? hinsichtlich ODBC!

    Viele Grüße Tom

  2. ist es möglich mit PHP auf die Termine in Outlook zuzugreifen - ohne den Weg des Exportierens?

    Hallo Torsten,

    falls Du fragst, ob Du mit PHP auf das Outlook eines Clients zugreifen kannst: ebensowenig wie mit jeder anderen serverseitigen Sprache.

    Falls Du fragst, ob Du auf das Outlook auf Deinem Server zugreifen kannst: ebenso wie mit jeder andere Sprache, die in der Lage ist, COM-Objekte zu instanziieren. Je nachdem, ob Du auf Outlook selbst zugreifst (wäre eher exotisch auf einem WebServer), verwendest Du eine MAPI-Session (siehe z.B. http://www.digiways.com/articles/php/outlook/), oder wenn Du auf einen Exchange-Server zugreifst, verwendest Du Collaborate Data Objects.

    HTH Robert

    1. Hi

      Falls Du fragst, ob Du auf das Outlook auf Deinem Server zugreifen kannst: ebenso wie mit jeder andere Sprache, die in der Lage ist, COM-Objekte zu instanziieren. Je nachdem, ob Du auf Outlook selbst zugreifst (wäre eher exotisch auf einem WebServer), verwendest Du eine MAPI-Session (siehe z.B. http://www.digiways.com/articles/php/outlook/), oder wenn Du auf einen Exchange-Server zugreifst, verwendest Du Collaborate Data Objects.

      Hey, danke für den Link, allerings ist da nur beschrieben, wie ich auf die Mails zugreife, wie aber kann ich auf den Kalender zugreifen???

      Gruss, Torsten

      1. http://www.digiways.com/articles/php/outlook/

        Hallo Torsten,

        Hey, danke für den Link, allerings ist da nur beschrieben, wie ich auf die Mails zugreife, wie aber kann ich auf den Kalender zugreifen???

        der Link zeigt Dir ein Prinzip, nachdem Du von PHP aus COM-Objekte instanziieren und nutzen kannst.

        Für Deinen speziellen Fall würde ich nicht mit MAPI-Sessions arbeiten, sondern mit dem Outlook-Objekt selbst. Nach dem Logon() setzt rufst Du den Methode GetNameSpace("MAPI") auf (was nicht bedeutet, mit MAPI-Sessions zu arbeiten!) und wählst mit GetDefaultFolder(olFolderCalendar) den gewünschten Folder "Kalender" aus. Dann kannst Du mit dem Kalender machen, was Du willst...

        Objekte, Methoden und Eigenschaften zur Automatisierung von Outlook findest Du in der VBA-Hilfe von Outlook (auf meiner Maschine: C:\Programme\Microsoft Office\Office10\1031\VBAOL10.CHM), die Konstanten bei MSDN (olFolderCalendar könnte 9 sein, bin nicht sicher...).

        HTH Robert

        1. Hi Robert,

          Für Deinen speziellen Fall würde ich nicht mit MAPI-Sessions arbeiten, sondern mit dem Outlook-Objekt selbst. Nach dem Logon() setzt rufst Du den Methode GetNameSpace("MAPI") auf (was nicht bedeutet, mit MAPI-Sessions zu arbeiten!) und wählst mit GetDefaultFolder(olFolderCalendar) den gewünschten Folder "Kalender" aus. Dann kannst Du mit dem Kalender machen, was Du willst...

          Das hört sich ha an, als wärs kein Problem. Leider bin ich auf dem Gebiet ziemlich neu. Wär nett, wenn Du mir das in PHP mal zusammenschreiben könntest - GetNameSpace oder GetDefaultFolder sagen mir garnichts :-(((

          Und was heißt "machen, was Du willst" - ich will nur einen Liste mit den eingetragenen Terminen ausgeben - kann ich mir das vorstellen wie die Ausgabe aus einer MySQL-DB? Woher kenn ich die Spalten???

          Fragen über Fragen - ich hoffe Du kannst mir weiterhelfen. Das wär echt supernett.
          Danke schonmal...

          Torsten

          1. Hi Torsten,

            Das hört sich ha an, als wärs kein Problem.

            Ist es auch nicht!

            Leider bin ich auf dem Gebiet ziemlich neu.

            Wunderbar - freu Dich darauf, Dir etwas Neues zu erarbeiten. Hier im Forum wird man Dich beim Lernen gerne unterstützen.

            Wär nett, wenn Du mir das in PHP mal zusammenschreiben könntest -

            Gerne! Unser Entwicklungsstundensatz liegt bei 74 EUR netto. Wenn Du noch einmal kurz die genaue Aufgabenstellung zusammenfaßt, werde Ich Dir ein Pauschalangebot kalkulieren.

            GetNameSpace oder GetDefaultFolder sagen mir garnichts :-(((

            Deshalb hatte ich Dir die Outlooks VBA-Hilfe an's Herz gelegt (VBAOL10.CHM, oder im MSDN: http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28000550, dann links im TreeView Office/Dein Outlook).

            Und was heißt "machen, was Du willst" - ich will nur einen Liste mit den eingetragenen Terminen ausgeben - kann ich mir das vorstellen wie die Ausgabe aus einer MySQL-DB? Woher kenn ich die Spalten???

            Auch wenn positive Betrachtungen zu MS-Produkte hier im Forum regelmäßig Furor machen, gehören die objektorientierten Mechanismen zur Automatisierung der MS-Anwendungen sicherlich zu den herausragenden Entwicklungen aus Redmond. Leider werden Sie uns wegen der immanenten Mißbrauchsmöglichkeiten in Zukunft mehr und mehr abhanden kommen - etwa so, als dürften Messer nur noch ohne Klinge verkauft werden, da manche Anwender von Messern diese zum Aufschlitzen der Kehlen Ihrer Mitmenschen verwenden.

            Mit "machen, was Du willst" meine ich, daß Du nach dem Zugriff auf den Kalender-Folder mit dem Kalender machen kannst, was Du willst. Ja, das Auslesen einer Liste mit Terminen ist in der Grundgesamtheit aller Möglichkeiten enthalten.

            Fragen über Fragen - ich hoffe Du kannst mir weiterhelfen. Das wär echt supernett.

            Falls Du doch Deinen Horizont erweitern und Dich selbst mit der Lösung der Aufgabe beschäftigen möchtest, habe ich Dir unten den Quellcode aus meiner Adressverwaltung angegeben (in Visual FoxPro codiert, ist eine einfache und intuitiv zu erfassende Sprache, sodaß Du den Folderzugriff leicht in PHP übersetzen kannst). Diese Prozedur wird aufgerufen, um zu einen zu einer Adresse gehörenden Termin in Outlook anzulegen.

            Ich hoffe, diese ausufernde Antwort und der Quellcode sind supernett genug... Viel Erfolg beim Lernen!

            HTH Robert

            *--------------------------------------------------------------------
            * PRG\AUTO_OUTLOOK.PRG called from frmKV.CreateOutlookAppointment()
            *--------------------------------------------------------------------

            #include ..\AGENT\HDR\VBAConstants.h

            LPARAMETERS vcSubject,vcLocation,vcBody

            LOCAL loOutl,loAppoint,loNS,loFolder,llError

            *  Outlook2000 CLSID = {0006F03A-0000-0000-C000-000000000046}
            llError = .F.
            ON ERROR setErrorFlag(@llError)
            loOutl = CREATEOBJECT("Outlook.Application")
            ON ERROR
            IF llError OR (NOT VARTYPE(loOutl) == "O")
              =MESSAGEBOX("Outlook konnte nicht geöffnet werden!"+CHR(13)+CHR(13) ;
                         +"Für die Ausführung dieser Funktion muß Microsoft Outlook ab der Version 2000 auf Ihrem Rechner installiert sein!",16,"Fehler")
              RETURN
            ENDIF
            loNS      = loOutl.GetNameSpace("MAPI")
            loFolder  = loNS.GetDefaultFolder(olFolderCalendar)
            loAppoint = loOutl.CreateItem(olAppointmentItem)
            WITH loAppoint
              .Subject  = vcSubject
              .Body     = vcBody
              .Location = vcLocation
              .Display
            ENDWITH
            loAppoint = .NULL.
            loFolder  = .NULL.
            loNS      = .NULL.
            loOutl    = .NULL.
            RELEASE l*

            FUNCTION setErrorFlag
              LPARAMETERS rlError

            rlError = .T.
            RETURN

            *--------------------------------------------------------------------