Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywolanie Outlooka z php
Forum PHP.pl > Inne > Hydepark
Zulus_0000
Mam pytanko dla wtajemniczonych. Jak wywolać z poziomu php żeby u Klientaotwarł się Outlook i tak jak chcę wypełnił mu pola [do:], [Temat:], [Treść:]. Czy jest to wogóle możliwe?
mike
To jest niemożliwe w php.
php jest językiem server-side działającym jak sama nazwa wskazuje po stronie serwera i nie mogącym nic zrobić na komputerze użytkownika.

---update---
Możesz to co najwyżej w jakimś JavaScript zrobić lub za pomocą HTML.
W tym celu patrz post poniżej winksmiley.jpg (~crash)
crash
  1. <a href="mailto:email@jakis.pl?subject=Temat&body=Tresc">send mail</a>


O php już nawet nie wspominam, mike_mech powiedział wszystko co trzeba...
Zulus_0000
Dziękuje za odpowiedź.
escaflowne
No... jeżeli skrypt php będzie uruchamiany po stronie klienta (czytaj: będzie się on znajdował na lokalnym dysku klienta) to można uruchomić Outlooka przez WMI (i teoretycznie wypełnić odpowiednie pola). Skoro można w ten sposób otworzyć Worda i np. wpisać do niego tekst, to czemuby nie można było zrobić czegoś podobnego z Outlookiem? smile.gif
Seth
Mozna tez uzyc COMow i stworzyc instancje Outlooka - a o ile nie mam programu antywirusowego, ktory zablokuje nam pewne funkcje Outlooka to mozemy zrobic z nim teoretycznie wszystko winksmiley.jpg
Zulus_0000
Seth czy możesz rozwinąc temat. Sprawa rzeczywiście dotyczy nietypowego zastosowania php. Mała firma, wewnętrzna sieć, serwer Apacha, MySQL - zbieranie danych z kilku stanowisk. Moąliwy dostep użytkowników do zasobów
serwera, jak to sprzęgnąć smile.gif
Seth
1) Aby uzyc COMow musimy dzialac na Windowsie.
2) Musi byc zainstalowany Outlook

Teraz dzieki COMom http://pl.php.net/com mozemy stworzyc instancje Outlooka:

  1. <?php
  2. $outlook = new COM("Outlook.Application");
  3.  
  4. //...
  5. ?>


Teraz w zmiennej $outlook mamy dostep do outloka i jego obiektow. Caly model - klasy, metody, wlasciwosci jakie oferuje nam instancja Outlooka dostepne sa tutaj: http://msdn.microsoft.com/library/default...._HV01049998.asp

Teraz dla przykladu mozemy wylistowac tresc mail w inboxie:

  1. <?php
  2. $outlook = new COM("Outlook.Application");
  3. $ns = $outlook->GetNamespace("MAPI");
  4.  
  5. $inbox = $ns->GetDefaultFolder(olFolderInbox);
  6.  
  7. $mail = $inbox->Items;
  8.  
  9. while ($item = $mail->getNext()) {
  10.  echo 'Tresc: ' . $item->Body . "<br /><br />\r\n\r\n";
  11. }
  12. ?>


Tak naprawde najlatwiej jest poprzerabiac skrypty VBS, ktorych jest pelno w sieci, ktore traktuja o COMach Outlooka - dzieki nim wiem np. ze pobierajac GetDefaultFolder(olFolderInbox) zwroci mi katalog inbox wraz z kolekcja Items gdzie mam maile.

No i tak jak pisalem, dziala to tylko na Windowsie z zainstalwoanym Outlookiem i skonfigurowanym kontem - bardzo dawno pisalem aplikacje i skrypty w Visual Basicu, ktore krozystaja z COM Outlooka, wiec juz nawet nei pamietam jak z poziomu skryptu logowalo sie na inne konto. No ale w sieci pewnie sie znajdzie winksmiley.jpg
Zulus_0000
Odpowiada Zulus_0000:
Seth Dzięki wielkie za opis. Muszę to przećwiczyć winksmiley.jpg
---update---
Ostatecznie skorzystałem z propozycji Crasha i oto praktyczny kod
  1. <?php
  2. //MOJ TEXT - to co chcę przenieść do Outlooka//
  3. $text1='MOJ TEXT - Linia 1'.'%0A';
  4. $text2='MOJ TEXT - Linia 2'.'%0A';
  5. $filename="test.php";
  6. $fd=@fopen($filename,"a+");
  7. if($fd==null){
  8. print("Bład serwera nie można otworzy pliku: test.php");
  9. return;
  10. }
  11. // <a href="mailto:email@jakis.pl?subject=Temat&body=Tresc">send mail</a>//
  12. $t1='<a href="mailto:xyz@jakis.pl?subject=Temat&body=';
  13. $t2=$text1.$text2;
  14. $t3='">Wyslij Maila</a>';
  15. $new_data=$t1.$t2.$t3;
  16. fwrite($fd, $new_data);
  17. fclose($fd);
  18. include($filename);
  19. ?>

Użtkownik na ekranie dostaje link " Wyslij Maila", jeżeli kliknie to uruchomi się Outllook i przepisze:
do:xyz@jakis.pl, temat i treść text1, text2 (w osobnych liniach).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.