PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Outlook und PHP


mabu
17.09.2004, 09:26:50
Hallo zusammen

Wie kann ich mein Outlook (nicht Seite Server) mittels PHP ansteuern?

Einen kleinen Code habe ich mal gebastelt. Leider funktioniert dieser nicht.

<?php
//Daten an Outlook schicken

$myOlApp = new com("Outlook.Application");
$myNameSpace = myOlApp->GetNamespace("MAPI");
$myFolder = myNameSpace->GetDefaultFolder(10); //'(olFolderContacts) '10
$myItem = myOlApp->CreateItem(2); //'(olContactItem) '2

$myItem.FirstName = "Markus Test";
$myItem->LastName = "Brunner";

$myItem->FullName = "Markus Brunner";
$myItem->Birthday = "24.02.1971";

$myItem->CompanyName = "CompanyName";
$myItem->BusinessAddress = "BusinessAdress";
$myItem->BusinessAddressCity = "BusinessAdressCity";
$myItem->BusinessAddressPostalCode = "PostalCode";
$myItem->BusinessFaxNumber = "Fax_G";
$myItem->BusinessTelephoneNumber = "Tel_G";
$myItem->BusinessHomePage = "";
$myItem->MobileTelephoneNumber = "Handy";

$myItem->HomeAddressStreet = "Homeadress";
$myItem->HomeAddressCity = "HomeCity";
$myItem->HomeAddressPostalCode = "Code";


$myItem->Email1Address = "Email1";
$myItem->Email1DisplayName = "Email_Name1";
$myItem->Email2Address = "Email2";
$myItem->Email2DisplayName = "Email_Name2";
$myItem->WebPage = "Homepage";
$myItem->Display
//$myItem->Save
?>

Besten Dank für Eure Hilfe.

feuervogel
17.09.2004, 10:23:38
willkommen im forum!

auch wenn du neu bist, darfst du die [php]-tags benutzen.

> Leider funktioniert dieser nicht.

wo liegt denn der fehler bzw. nenne doch mal fehlermeldungen.

mabu
17.09.2004, 10:38:38
Hallo feuerfogel

Besten Dank für die schnelle Antwort.

Der Fehler liegt im laden der Com-Library. Da das Outlook nicht auf dem Server installiert ist. Ich möchte jedoch auf den Client zugreiffen.

Hast du einen Tipp?

feuervogel
17.09.2004, 13:07:29
du willst per php mit einem script auf einem server auf das outlook zugreifen, welches beim besucher auf dem pc installiert ist? sehe ich das richtig?

mabu
17.09.2004, 14:06:55
Ja, so ungefähr.

Ich möchte Kontakte und Termine in das Outlook (seite Client) eintragen.

Usul
17.09.2004, 14:27:26
Das wird wohl kaum gehen. Oder hast du schonmal ne website gesehen, die bei dir auf dem Computer Programme steuert? Waere ja schlimm.

Biete Termine doch als importierbare Dateien an. Dazu empfehle ich das oeffentliche ICalendar Format *.ics, welches hier (http://www.ietf.org/rfc/rfc2445.txt) beschrieben ist. Ich habe einen Kalender programmiert, wo ich die von den Usern erstellte Termine auch in dieser Form importierbar mache und es funktioniert wunderbar.

mabu
17.09.2004, 17:43:18
Eine Webseite dazu habe ich sozusagen gesehen. Es handelt sich hier um http://www.openbc.com/. Dort kann man seine Einträge mit der Homepage synchronisieren.

Das Script habe ich leider nicht bekommen.

Theoretisch sollten solche Ausführungen auch kein Problem sein.

Usul
17.09.2004, 17:48:54
auf jeden fall hat *.ics riesen vorteile gegenueber deiner methode:

- betriebssystem unabhaengig (com funzt nur bei win)

- programm unabhaengig (nicht nur outlook, sondern zig andere programme koennen dieses format importieren, wie z.b. mozilla sunbird)


also fallsde termine austauschen willst, dann wuerde ich diesen weg gehen.

mabu
17.09.2004, 21:13:15
Hallo Usul

Besten Dank für den Tipp. Kannst du mir deinen Code geben?

Gruss Markus

Usul
18.09.2004, 17:01:48
ich weiss ja nicht genau, WAS du brauchst.

also eine *.ics datei ist ne normale textdatei, die ungefaehr so aussieht:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:http://www.eindeutigeIDdurchWEBSITE.de
METHOD:PUBLISH
BEGIN:VEVENT
UID:461092315540
ORGANIZER;CN="User Name"MAILTO:not.a.valid.mail.only.here.for.outlook@ms.de
SUMMARY:Eine Kurzinfo
DESCRIPTION:Die Beschreibung des Termines
CLASS:PUBLIC
DTSTART:20040910T220000Z
DTEND:20040919T215900Z
DTSTAMP:20040812T125900Z
END:VEVENT
END:VCALENDAR

Wenn der User auf nen link "Termin herunterladen" klickt, dann fuehrst du halt n script aus, dass den Termin wie oben erstmal aus deinen Daten in einem String (sagen wir "$schedule" ) zusammenbaut, und dann dem user folgendermassen zum Download anbietet:

header('Content-Type: text/calendar');
header('Content-Disposition: inline; filename="'.$filename.'"');
echo $schedule;

Wobei "$filename" halt einfach der Dateiname ist (den erstell ich auch dynamisch, damit dort auch schon ein par infos rauslesbar sind).

Was du genau alles in der *.ics Datei so angeben kannst, steht hier (http://www.ietf.org/rfc/rfc2445.txt) . OK, mann muss sich etwas einlesen, aber du kannst mich auch ruhig fragen. Eigentlich ist es ganz einfach aufgebaut. Mein Beispieltermin ist schon ein richtiger funktionierender Termin (kannste mit Mozilla Sunbird (http://www.mozilla.org/projects/calendar/sunbird_download.html) kostenlos testen, oder auch mit Outlook importieren.

Edit: Im Skript darf vor dem header nichts ausgegeben werden, also auch keine Leerzeile vor dem "<?php" tag, weshalb du mit "<?php" direkt anfangen musst im skript.

mabu
01.10.2004, 13:34:38
Hallo Usul

Besten Dank für den Tipp. Hat alles wunderbar funktioniert.

Kannst du mir einen Tipp für die Distributionlist geben?
Irgenwie scheint dies bei mir nicht zu funktionieren:
BEGIN:VCARD
VERSION:2.1
X-DL;Design Work Group:List Item 1;List Item 2;List Item 3
BEGIN:VCARD
UID:List Item 1
N:John Smith
TEL:+1-213-555-1111
END:VCARD
BEGIN:VCARD
UID:List Item 2
N:I. M. Big
TEL:+1-213-555-9999
END:VCARD
BEGIN:VCARD
UID:List Item 3
N:Jane Doe
TEL:+1-213-555-5555
END:VCARD
END:VCARD

Und mein zweites Problem ist das erstellen von mehreren Terminen.
Ich möchte sämtliche Termine via vCalendar auslesen. Muss ich hierfür jeden abspeichern? Gibt es keine andere Alternative?

Besten Dank

Gruss Markus

Usul
02.10.2004, 18:06:27
Original geschrieben von mabu
Hallo Usul

Besten Dank für den Tipp. Hat alles wunderbar funktioniert.


freut mich :-)
Original geschrieben von mabu

Kannst du mir einen Tipp für die Distributionlist geben?


Leider nicht, da ich mich ja nur wegen meinem Kalender in iCalendar eingearbeitet hatte und deshalb nur Erfahrung mit Terminen habe.

Aber vielleicht probierst du einfach mal mit nem Programm, was diese Listen erstellen kann, eine Liste im iCalendar-Format zu exportieren und schaust dir dann an, wo der Unterschied zu deinen ist.

Original geschrieben von mabu

Und mein zweites Problem ist das erstellen von mehreren Terminen.
Ich möchte sämtliche Termine via vCalendar auslesen. Muss ich hierfür jeden abspeichern? Gibt es keine andere Alternative?


Mehrere Termine sind einfach:

BEGIN:VCALENDAR
VERSION
:2.0
PRODID
:-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
METHOD
:PUBLISH
BEGIN:VEVENT
...ERSTER TERMIN...
END:VEVENT
BEGIN:VEVENT
...ZWEITER TERMIN...
END:VEVENT
END:VCALENDAR

mabu
10.10.2004, 17:22:47
Hallo Usul

Da bin ich mal wieder. Irgendwie habe ich immer noch ein kleines Problem, welches noch nicht so richtig funktioniert.

1. Wenn ich einen Termin übertragen will und diesen nicht speichere sondern direkt öffne, erhalte ich die Fehlermeldung:
Der Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden.

2. Wie kann ich den Kalendereintrag auf für MAC kompatibel machen?

3. Wie kann ich einem Image den Kalendereintrag zuweisen? Bisher übergebe ich diese mittels einer CheckBox.



Besten Dank für deine Hilfe.

Gruss Markus

P.S. Hier noch der Code, welcher mir die Einträge generiert.
<?php

include("Config.php");
include("check.php");

//Zeiteinstellung machen
$Datum = date("d.m.Y");

//Session erstellen
@session_start();

// Daten in DB eintragen
//Verbindung aufbauen, auswählen einer Datenbank
$link = mysql_connect($DB_HOST, $DB_USER, $DB_PASS)
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db($DB_NAME) or die("Auswahl der Datenbank fehlgeschlagen");

$query = "SELECT * FROM fdp_termine where SID = '".$_SESSION['userTermin_eintragen']."'";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen 1: " . mysql_error());

while($data = mysql_fetch_array ($result))
{
//Ergebnisse in Variable schreiben
$SID=$data['SID'];
$Wann_tag=$data['Wann_tag'];
$Wann_monat=$data['Wann_monat'];
$Wann_jahr=$data['Wann_jahr'];
$Was=$data['Was'];
$Wo=$data['Wo'];
$Von=$data['Von'];
$Bis=$data['Bis'];
$Memo=$data['Memo'];
$Gueltig_tag=$data['Gueltig_tag'];
$Gueltig_monat=$data['Gueltig_monat'];
$Gueltig_jahr=$data['Gueltig_jahr'];

if($Memo==""){$Memo="-";}
}

$Filename = "FDP_Event_$Was.vcs";
header("Content-Type: text/x-vCalendar");
header("Content-Disposition: inline; filename=$Filename");

$Date="$Wann_jahr$Wann_monat$Wann_tag";
$Time_Start=str_replace(":","",$Von);
$Time_End=str_replace(":","",$Bis);
$T="T";
$Sekunde="00";
$vCalStart = "$Date$T$Time_Start$Sekunde"; //date("YmdTHi00", $row['Von']); "$Date"&"T"&"$Time_Start";
$vCalEnd = "$Date$T$Time_End$Sekunde";//date("YmdTHi00", $row['Bis']);
?>
BEGIN:VCALENDAR<?php echo "n"; ?>
PRODID:FDP Kalendereintrag<?php echo "n"; ?>
VERSION:1.0<?php echo "n"; ?>
BEGIN:VEVENT<?php echo "n"; ?>
DTSTART:<?php echo $vCalStart . "n"; ?>
DTEND:<?php echo $vCalEnd . "n"; ?>
LOCATION;ENCODING=QUOTED-PRINTABLE:Bolligen<?php echo "n"; ?>
SUMMARY;ENCODING=QUOTED-PRINTABLE:<?php echo $Was . "n"; ?>
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:<?php echo $Memo . "n"; ?>
PRIORITY:3<?php echo "n"; ?>
END:VEVENT<?php echo "n"; ?>
END:VCALENDAR

Usul
13.10.2004, 19:26:10
Original geschrieben von mabu

1. Wenn ich einen Termin übertragen will und diesen nicht speichere sondern direkt öffne, erhalte ich die Fehlermeldung:

Der Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden.



Ist erstmal kein PHP-Problem. Ich weiss ja nicht welchen Browser du benutzt, aber Mozilla fragt halt nach der Anwendung, mit der man es oeffnet. Wenn du es mit ner falschen Anwendung oeffnest, dann gehts natuerlich nicht. Wird denn dein Kalenderprogramm (z.b. Outlook) gestartet?

Original geschrieben von mabu

2. Wie kann ich den Kalendereintrag auf für MAC kompatibel machen?


Ich bin ja kein Mac User. Aber soweit ich weiss gibts da einen verbreiteten (vielleicht sogar schon mitgelieferten) Kalender, der iCalendar Dateien interpretiert. Es ist ja keine Frage des Computers oder des Betriebssystems, sondern eine Frage ob der Kalender das Format interpretiert.

Original geschrieben von mabu

3. Wie kann ich einem Image den Kalendereintrag zuweisen? Bisher übergebe ich diese mittels einer CheckBox.


Wie meinst du das? Du kannst doch ein Image innerhalb der <a></a> Tags tun und schon fungiert es als Link. Oder habe ich da jetzt was falsch verstanden?

mabu
14.10.2004, 17:23:41
Tja, ich bin noch nicht so gut in PHP und HTML.

Das wichtigste zuerst:

Punkt 3
Ich habe eine Liste von Terminen. In der letzten Spale füge ich ein Bild ein (z.B. einen Kalender). Nun möchte ich dem Bild den ID Wert von der Datenbank zuweisen, damit nach dem anklicken des Bildes eine SQL Query mit dem ID-Wert ausgeführt wird und dass mir danach der Termin via bla.vcs ausgegeben wird. Mein Problem ist nun, dem Bild den ID-Wert zu zuweisen. Der ID-Wert ist eine Integer und wird bei jedem Kalendereintrag automatisch erhöht.

Punkt 1
Ja, ich benütze Outlook 2003. Der Witz, wenn ich die .vcs Datei speichere und danach öffne funktionierts. Wenn ich die Datei direkt vom Internet öffnen will, kommt die Fehlermeldung.

Punkt 2
Tja, ich dachte mir, dass du dein Programm vielleicht auf .ics Dateien ausgelegt hast und dass du mir dort einen Tipp oder sogar den Code geben könntest.

Alles in Allem danke ich Dir für deine Antworten und hoffe natürlich auf Deine Hilfe. Bisher bist Du jedenfalls der einzige, welcher mir hier weiterhelfen konnte.

Gruss Markus

Usul
14.10.2004, 17:36:22
Original geschrieben von mabu
Tja, ich bin noch nicht so gut in PHP und HTML.

Das wichtigste zuerst:

Punkt 3
Ich habe eine Liste von Terminen. In der letzten Spale füge ich ein Bild ein (z.B. einen Kalender). Nun möchte ich dem Bild den ID Wert von der Datenbank zuweisen, damit nach dem anklicken des Bildes eine SQL Query mit dem ID-Wert ausgeführt wird und dass mir danach der Termin via bla.vcs ausgegeben wird. Mein Problem ist nun, dem Bild den ID-Wert zu zuweisen. Der ID-Wert ist eine Integer und wird bei jedem Kalendereintrag automatisch erhöht.


ich wuerde das bild zu dem skript verlinken, welches den *.ics termin generiert. die id uebergibst du ganz normal in der url: www.Pfad/zum/Skript.php?id=WERT . So kannste dann in deinem skript die id mit $_GET['id'] ganz normal auslesen.
Original geschrieben von mabu

Punkt 1
Ja, ich benütze Outlook 2003. Der Witz, wenn ich die .vcs Datei speichere und danach öffne funktionierts. Wenn ich die Datei direkt vom Internet öffnen will, kommt die Fehlermeldung.


Hmm, keine Ahnung. Startet den Outlook ueberhaupt? Oder kommt gleich die Fehlermeldung? Wenn Outlook gar nicht erst startet, dann scheint die Datei nicht mit Outlook verknuepft zu sein.
Original geschrieben von mabu

Punkt 2
Tja, ich dachte mir, dass du dein Programm vielleicht auf .ics Dateien ausgelegt hast und dass du mir dort einen Tipp oder sogar den Code geben könntest.

Alles in Allem danke ich Dir für deine Antworten und hoffe natürlich auf Deine Hilfe. Bisher bist Du jedenfalls der einzige, welcher mir hier weiterhelfen konnte.

Gruss Markus

den quellcode zu meinen kalender kannste auf meiner seite (http://www.steffenkobilke.de/) runterladen (enthaelt natuerlich keine passwoerter). den kalender live erleben kannste hier (http://www.poehly.com/Add-Ons/Kalender/calendar.php) wobei es sich hier um eine neuere Version des Kalenders handelt als der Quellcode ist. Z.b. siehst du da keine privaten (=mein freundeskreis) termine, sondern nur oeffentliche.

mabu
14.10.2004, 18:01:23
Hey, der Kalender ist fast genau das, was ich suche. Ich habe ihn zugleich ausprobiert und einen Termin eingefügt. Wenn ich jedoch den Termin nicht speichere und sogleich öffne, erhalte ich die selbe Fehlermeldung wie bei mir. P.S. Fehlermeldung wenn das Outlook nicht gestartet ist: Outlook kann nicht gestartet werden. Keine Ahnung, wo das Problem liegt. So wie es aussieht hast du mir nun gerade in sämtlichen meiner Probleme geholfen. Ich werde mich mal durchkämpfen und versuchen, das ganze besser zu verstehen. Und vielen vielen Dank.

Gruss Markus

Usul
14.10.2004, 18:33:54
danke.

aber ich nehme an, der quelltext wird nicht so einfach zu verstehen sein. ich habe schliesslich ewig lange gebraucht, den kalender so hinzukriegen. am anfang wollte ich alles ganz sauber machen und jeden scheiss kommentieren, doch irgendwann wollte ich dann nur noch fertig werden und habe nur noch ganz grob kommentiert. also viel glueck jedenfalls beim lessen.

ein tipp: jeder link ruft calendar.php auf, welches sozusagen die zentrale verwaltungsdatei ist. dann brauche ich mich um so sachen wie das verbinden zur datenbank, das einbinden globaler funktionen und variablen oder session-managment nur einmal in einer datei kuemmern.

also viel glueck.

wennde fertig bist, kannste mir ja mal deinen kalender irgendwann zeigen.