Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> e-mail -> php, Jak coś takiego zrobić
TomASS
post 25.04.2007, 10:50:22
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Witam.


System składania zamówień drogą elektroniczną przez www. Jednak w niektórych firmach pracownicy mają dostęp tylko do poczty. Mam zamiar zrobić jakiś wzór e-maila aby był wysyłany na serwer i dane te wchodziłyby do bazy danych (przez PHP) czy to możliwe aby PHP czytał e-maile?


Dzięki.
Tom.


--------------------
Go to the top of the page
+Quote Post
mike
post 25.04.2007, 11:09:04
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Możliwe, PHP ma bibliotekę do obsługi poczty: IMAP.
Możesz praktycznie napisać własnego klienta poczty.

Zajrzyj, popatrz, postudiuj. Potem przyjdzie czas na szczegółowe pytania winksmiley.jpg
Go to the top of the page
+Quote Post
siemakuba
post 25.04.2007, 11:48:51
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


Jeżeli masz dostęp do serwera większy niż tylko standardowa obsługa na potrzeby www i www leży na tym samym serwerze co serwer pocztowy możesz spróbować też z innej strony.

Poszukaj o konfiguracji poczty przez plik procmail.rc. W tym pliku, możesz sobie utworzyć regułę, która spowoduje, że mail (jego treść) z określonym nagłówkiem (lub o określonym temacie, określonym nadawcy czy cokolwiek) zostanie przekazany do skryptu php.

Pseudokod (w procmail.rc):
Kod
if(header == 'x-shop-mail')
    php /home/www/shop/save-mail-2-db.php?mail=$1


P.S. Takie kombinacje uda ci się wykonać chyba tylko wtedy, kiedy firma ma własny serwer. Dodatkowo, niesie to za sobą sporo ograniczeń na pewno, które pewnie nie pojawią się przy korzystaniu z IMAP, o którym wspomniał @mike_mech. Podaję, jako jeden ze sposobów, być może akurat będzie odpowiedni.

pozdr.
Go to the top of the page
+Quote Post
TomASS
post 29.04.2007, 23:18:04
Post #4





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Dzięki koledzy, noto teraz czas na pytania:

wydziergałem coś takiego:
  1. <?
  2. $mbox = imap_open("{xxxxxx.pl:110/pop3}INBOX", "zzzz@xxxxxxpl", "haselko");
  3.  
  4. if (imap_num_msg($mbox) == 0)
  5. {
  6. echo 'Brak wiadomosci';
  7. }
  8. else{
  9. $emails = imap_search($mbox, "UNSEEN SUBJECT palety");
  10.  
  11. if(is_array($emails)){
  12. foreach ($emails as $message) {
  13. $naglowek = imap_headerinfo($mbox,$message,80,80);
  14. $from = $naglowek->from[0]->mailbox . '@' . $naglowek->from[0]->host;
  15. $date = gmdate('Y-m-d H:i:s', $naglowek->udate);
  16. $body = nl2br(imap_fetchbody($mbox, $message, "1"));
  17. }
  18. }
  19. }
  20. ?>

Wszystko pinknie czyta, ale teraz jak mam ustawić wiadomość na "przeczytaną"?
Daję np.:
  1. <?php
  2. if(is_array($emails)){
  3. foreach ($emails as $message) {
  4. $naglowek = imap_headerinfo($mbox,$message,80,80);
  5. $from = $naglowek->from[0]->mailbox . '@' . $naglowek->from[0]->host;
  6. $date = gmdate('Y-m-d H:i:s', $naglowek->udate);
  7. $body = nl2br(imap_fetchbody($mbox, $message, "1"));
  8. $status = imap_setflag_full($mbox, "2,5", "Seen");
  9. }
  10. }
  11. ?>

i niestety nie działa :/

Dzięki za rozwianie wątpliwości smile.gif

Ten post edytował TomASS 29.04.2007, 23:20:13


--------------------
Go to the top of the page
+Quote Post
virusek856
post 30.04.2007, 23:28:27
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.01.2006

Ostrzeżenie: (0%)
-----


Być może serwer nie obsługuje flag,
Rozwiązaniem, może być pobranie maila i zapisanie go lokalnie a następnie usunięcie z serwera pocztowego imap_delete + imap_expunge.
Jeżeli są to zamówienia z sklepu www, to wydaje mi się, że informacje o zamówieniu zostaną w jakiś sposób sparsowane i tak trafią do bazy, więc mail jest już bezużyteczny.
Go to the top of the page
+Quote Post
TomASS
post 1.05.2007, 10:49:03
Post #6





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Serwer obsługuje flagi.
Cytat
  1. <?php
  2. imap_delete + imap_expunge.
  3. ?>

Używam
  1. <?php
  2. imap_delete($mbox, $message);
  3. imap_close($mbox,CL_EXPUNGE);
  4. ?>


Cytat
Jeżeli są to zamówienia z sklepu www,

Nie są smile.gif

Cytat
to wydaje mi się, że informacje o zamówieniu zostaną w jakiś sposób sparsowane

No właśnie ja je parsuję
Cytat
więc mail jest już bezużyteczny

Muszę mieć historię e-maili a najlepiej chyba po prostu zostawić je na skrzynce.


Dzięki
T.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.06.2025 - 00:05