Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Tworzenie własnego klienta poczty
Forum PHP.pl > Forum > PHP
propage
Musze stworzyć klienta poczty o podstawowych funkcjach. W oparciu po PHP

Przy każdym wejściu do poczty łącze się z pocztą za pomocą pop3.

Sprawdzam czy są nowe emaile. Jeśli są to dodaje je do bazy danych.

Problemy mam dwa
1) Przy pierwszym połączeniu z pocztą, która zawiera np 2000 emaili, serwer nie wytrzymuje i się zawiesza. Jak najlepiej rozwiązać problem pierwszego wejścia na pocztę. Zważywszy na to, że konieczne jest, abym skopiował wszystkie emaile do bazy danych.
2) Jak sprawdzić, które emalie są nowe? Nowe czyli te, które zostały wysłane od ostatniego połączenia.
Problem polega na tym, iż nie mogę sprawdzić tego porostu na podstawie liczby emaili, które zwraca mi komenda STAT, ponieważ, ktoś mógł usunąć jakieś emaile z innego miejsca niż mój klient email. Wtedy liczba emaili w bazie danych bedzie wieksya niz ta na skrzynce, wieec nie jest to zadna matoda weryfikacji. Nie mogę też robić tego na podstawie daty wiadomości, ponieważ nie mogę otwierać wszystkich wiadomości pokolei i sprawdzać jaką miały date nadania, czy id (za duzo transferu).


Mam dodatkowe pytanie. Czytałem, że wiadomości email posiadają flagi, które mówią o tym, czy wiadomość była już pobrana z serwara. Jednak nigdzie w headerze wiadomości nie moge znaleźć tej flagi.
Przykładowy header
  1. Received: from unknown (HELO smtp.iq.pl) ([86.111.241.121]) (envelope-sender
  2. <biuro@designland.pl>) by iq.pl with SMTP for <info@prosklepy.pl>; 12 Aug 2009
  3. 03:28:46 -0000
  4. X-Virus-Scanned: Skaner antywirusowy IQ PL
  5. Received: from unknown (HELO designland.pl) ([91.204.160.180])
  6. (envelope-sender <biuro@designland.pl>) by iq.pl with AES256-SHA encrypted
  7. SMTP for <info@prosklepy.pl>; 12 Aug 2009 03:28:45 -0000
  8. Received-SPF: pass (thebe: domain of designland.pl designates 91.204.160.180 as permitted sender) client-ip=91.204.160.180; envelope-from=biuro@designland.pl; helo=designland.pl;
  9. Received: from localhost ([127.0.0.1] helo=designland.pl) by designland.pl
  10. with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from
  11. <biuro@designland.pl>) id 1Mb4WT-0000Uo-7X for info@prosklepy.pl; Wed, 12 Aug
  12. 2009 05:29:09 +0200
  13. MIME-Version: 1.0
  14. Date: Wed, 12 Aug 2009 05:29:09 +0200
  15. From: biuro@designland.pl
  16. To: info@prosklepy.pl
  17. Subject: Fwd: Re: Drewno
  18. X-Priority: 1 (Highest)
  19. Message-ID: <4bd904ae9a6ec81caaa644443a5b471c@localhost>
  20. X-Sender: biuro@designland.pl
  21. User-Agent: RoundCube Webmail/0.2.2
  22. Content-Transfer-Encoding: 8bit
  23. Content-Type: text/plain; charset="UTF-8"
daniel1302
1. Nie wczytuj wszystkich wiadomości na 1 stronie, podziel to na kilka stron
2. Podlicz wiadomości, dodaj na końcu WHERE
2,1. Gdy otwierasz wiadomości odczytujesz tytuł, odczytaj też date dodania i dodaj if
ucho
RFC mówi o takiej komendzie jak UIDL - nie wiem jak jest z obsługa tego na serwerach pocztowych - ale to załatwiało by obie sprawy - jeśli masz listę unikalnych identyfikatorów to łatwo sprawdzić czy są nowe oraz pobierać maile na raty.
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.