Zapis maili do bazy danych |
Zapis maili do bazy danych |
28.01.2009, 15:31:52
Post
#1
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) |
Witam
Mam taki sobie oto skrypcik : Kod <?php $mailbox = "{imap.gmail.com:993/imap/ssl}INBOX"; $user = "username"; $pass = "password"; $mbox = imap_open ($mailbox, $user, $pass) or die("can't connect: " . imap_last_error()); echo "<h1>Mailboxes</h1>\n"; $folders = imap_listmailbox($mbox, "{imap.gmail.com:993}", "*"); if ($folders == false) { echo "Call failed<br />\n"; } else { foreach ($folders as $val) { echo $val . "<br />\n"; } } echo "<h1>Headers in INBOX</h1>\n"; $headers = imap_headers($mbox); if ($headers == false) { echo "Call failed<br />\n"; } else { foreach ($headers as $val) { echo $val . "<br />\n"; } } $num = array(1,2,3); $numC = count($num); echo '<h1>Body of specified message</h1>'; for ($i = 0; $i < $numC; ++$i) { $body = imap_body($mbox, $num[$i]); if ($body == false) { echo 'Call failed (' . $num[$i] . ')<br />'; } else echo $body; } imap_close($mbox) ?> Pominmy wyswietlanie tego co zostalo pobrane. Nie mam pojecia jak teraz moge zapisac maile wraz z naglowkami do bazy danych po to abym mogl je pozniej z bazy wyciagnac i przeprowadzic na ich zawartosci analize....jaka analize to juz raczej nie ma znacznia , wazne jest to abym wiedzial gdzie konczy sie jeden mail a zaczyna drugi.....chociazby aby zostaly one zapisane do bazy tak aby kazdy mail byl w osobnej komorce. I jeszcze jedno pytanko. Czy za pomoca tych funkcji do pobierania maili z powyzszego skryptu pobierane sa rowniez tagi html i wszystkie szczegolowe informacje ktore sa przesylane przez protokoly ? Ten post edytował Wolfie 28.01.2009, 15:32:33 |
|
|
28.01.2009, 17:35:44
Post
#2
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) |
Aby mieć każdy mail w osobnym rekordzie (nie komórce) musisz użyć funkcji imap_sort(), która pobiera wszystkie wiadomości ze skrzynki. Otrzymasz tablicę z ID'ami poszczególnych wiadomości.
Teraz wykonujesz na tej tablicy foreach lub dowolną pętlę (wskazana, którą wymieniłem) i pobierasz nagłówki oraz body wiadomości, każdy z maili zapisujesz INSERT INTO do bazy jako osobny rekord. Kluczem rekordu powinien być też klucz ID wiadomości ze skrzynki - zapobiegnie to ewentualnemu dublowi. Do wyciągnięcia body używasz imap_fetchbody(), a do headerów imap_header(). Najlepiej po sprawdzeniu, czy zapis do bazy powiódł się, wywalić wiadomość ze skrzynki, żebyś nie musiał potem sprawdzać, czy istnieje i pobierać ją (wydłużać tego arraja). W tym celu oznaczasz wiadomość do usunięcia w foreach funkcją imap_delete() podając aktualny ID. Po zakończeniu pętli musisz wykonać funkcje, aby te wiadomości zniknęły: imap_expunge(). Kończysz imap_close() i gotowe. Ja do tego mam klasę, którą sobie napisałem, możesz wyciągnąć z niej jakieś kawałki:
-------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem. |
|
|
10.02.2009, 22:59:27
Post
#3
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) |
Spoko.
Klasa napewno bedzie pomocna. Problem polega na tym ze za bardzo sie nie orientuje w programowaniu obiektowym....jak narazie przeszedlem z 2-3 kursy i zrobilem kilka cwiczen. Moglbys mi jeszcze pokazac jak np wykorzystywac dana funkcje w praktyce ? |
|
|
10.02.2009, 23:55:15
Post
#4
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) |
Przykład
Oczywiście klasa jest tylko elementem wzorca factory, więc u mnie connect i disconnect wykonują się automatycznie, ale to jest przykładowa implementacja. Musisz usunąć extends z klasy, jeżeli nie chcesz używać silnika Vframe_Mail_Inbox_Engine należącego do Vframe_Mail_Inbox. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem. |
|
|
12.02.2009, 17:03:28
Post
#5
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) |
Moglem wkleic to w poprzednim poscie
Zrobilem cos takiego
Tylko ze jak widac tutaj mam pomieszane logike z prezentacja a chcialbym tego uniknac bo raczej to zla praktyka Kod jest mniej czytelny i nie mozna go wykorzystac w innych przypadkach bez przerobek....ale niestety nie wiem jak to zrobic Czy w odniesieniu do wzorca MVC Twoja klasa oraz przyklad z postu numer 4 to jest Model ? Ten post edytował Wolfie 11.02.2009, 00:03:54 |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 04:51 |