PHP oferuje dostęp do kont pocztowych poprzez protokół IMAP. Dzięki niemu możemy np. zalogować się na nasze konto pocztowe dostępne poprzez POP3. Obsługa protokołu IMAP jest bardzo prosta, a listę wszystkich funkcji wraz z opisami i przykładami znajdziemy w
dokumentacji na php.net.
Podstawową kwestią jest dostęp do funkcji IMAP. Niektóre serwery (np. darmowe) mogą nie mieć takiej opcji. Warto więc w skryptach sprawdzać czy funkcja istnieje, np.:
IF(!function_exists('imap_open')) { die('BRAK funkcji IMAP'); }
Jeżeli funkcje IMAP są dostępne to możemy spróbować połączyć się z serwerem poczty:
<?php
IF($mbox = imap_open("{NAZWA_SERWERA:110/pop3}INBOX", 'LOGIN', 'HASŁO'))
{
echo 'Połączenie nawiązane';
imap_close($mbox);
}
else
{
print_r(imap_errors());
}
Funkcja
imap_open służy do otwierania strumienia. Podać musimy adres serwera (np. pop3.poczta.gazeta.pl) i nasz login/hasło do konta poczty. Funkcja zwróci true jeżeli połączenie się powiedzie.
imap_close zamyka strumień i powinna być stosowana zawsze, gdy kończymy operacje na poczcie. Funkcja
imap_errors jest bardzo przydatna gdyż zwraca tablicę z błędami pojawiającymi się podczas połączenia. Bardzo przydatna podczas tworzenia i testowania aplikacji (a i w wersji ostatecznej obsługa błędów jest obowiązkowa...).
By wylistować listę emaili możemy skorzystać z funkcji
imap_headers($strumień), która to zwraca tablicę... Przed imap_close w powyższym przykładzie wstaw:
print_r(imap_headers($mbox));
Jak odczytać treść danej wiadomości -
imap_body($strumień, NUMER_EMAILA); (notka: numeracja "generowane" przez imap_headers jest o 1 mniejsza niż numery emaili). By skasować wiadomość stosujemy
imap_delete o takich samych argumentach co imap_body, lecz funkcja ta tylko "oznacza" wiadomości do kasacji, lecz ich nie usuwa. By usunąć wszystkie tak oznakowane wiadomości stosujemy np. funkcję
imap_expunge($strumień);
Pobieranie listy wiadomości:
<?php
echo '<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" /><pre>';
IF($mbox = imap_open("{NAZWA_SERWERA:110/pop3}INBOX", 'LOGIN', 'HASŁO'))
{
echo 'Połączenie nawiązane';
$check = imap_mailboxmsginfo($mbox);
IF(is_numeric($check->Nmsgs))
{
for($i = 1; $i <= $check->Nmsgs; $i++)
{
print_r(imap_fetch_overview($mbox, $i, 0));
}
}
imap_close($mbox);
}
else
{
print_r(imap_errors());
}
?>
Dla każdej wiadomości zostanie wyświetlona tablica z danymi zawierająca m.in. tytuł wiadomości.
Wyświetlenie treści pierwszej wiadomości:
<?php
echo '<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" /><pre>';
IF($mbox = imap_open("{NAZWA_SERWERA:110/pop3}INBOX", 'LOGIN', 'HASŁO'))
{
highlight_string(imap_body($mbox, 1));
imap_close($mbox);
}
else
{
print_r(imap_errors());
}
?>
- Dodane: 14.07.2008 przez riklaunim