Wyświetlenie listy wiadomości
tych samych autorów
- Własne RSS [MP]
- Rodzina XSL [MP]
- Wprowadzenie do XML [MP]
- Rozszerzenia XSSI [MP]
- Dynamiczne generowanie grafiki w PHP [MP]
zobacz również
Zanim przystąpimy do pobierania i wyświetlania listy wiadomości na koncie musimy sprawdzić czy skrzynka w ogóle jakieś wiadomości zawiera.
if (imap_num_msg($mbox) == 0)
{
echo 'Brak wiadomosci';
}
else
{
echo 'Ilość wiadomości: ' . imap_num_msq($mbox);
}
Jak łatwo się domyślić funkcja imap_num_msg() zwraca nam ilość wiadomości znajdujących się w otwartej skrzynce. Zakładając, że jakieś wiadomości są na naszym koncie możemy je teraz wyświetlić:
echo '<table>
<tr>
<th>Lp</th>
<th>Data nadania</th>
<th>Nadawca</th>
<th>Temat</th>
</tr>';for ($i = 1; $i <= imap_num_msg($mbox); $i++)
{
$naglowek = imap_headerinfo($mbox, $i, 80, 80);echo '<tr>
<td>' . $i . '</td>
<td>' . gmdate('Y-m-d H:i:s', $naglowek->udate) . '</td>
<td><a href="mailto:' . $naglowek->from[0]->mailbox . '@' . $naglowek->from[0]->host . '">' . $naglowek->from[0]->mailbox . '@' . $naglowek->from[0]->host . '</a></td>
<td>' . $naglowek->fetchsubject . '</a></td>
</tr>';
}echo '</table>';
Kod stał się trochę niewyraźny poprzez dodanie znaczników HTML, ale taki jest naturalny sposób wyświetlania listy wiadomości – w formie tabeli. Tworzymy pętlę o ilości powtórzeń równej liczbie wiadomości zwróconych funkcją imap_num_msg().
Dla każdej wiadomości wywołujemy funkcję imap_headerinfo(), która zwraca obiekt zawierający informacje z nagłówka wiadomości. Pierwszy jej parametrem jest zmienna przechowująca otwarte połączenie z serwerem, drugim numer wiadomości, której nagłówki chcemy pobrać. Dwa kolejne parametry są opcjonalne – ustalają one ograniczenia długości pól "od" oraz "temat".
Cały obiekt jest dosyć bogatą strukturą, której pełną zawartość wyjaśnia dokumentacja PHP. Dla naszych potrzeb wykorzystaliśmy jedynie kilka wartości:
udate | zwraca datę i czas otrzymania wiadomości w formacie Unix, stąd potrzeba wykorzystania funkcji gmdate(), aby dane te przedstawić w czytelniejszej formie |
from[] | ta wartość przechowuje tablicę informacji o nadawcy wiadomości, osobno przechowując nazwę skrzynki (mailbox), a więc to co znajduje się przed znakiem @, oraz osobno adres serwera, a więc część adresu po @. |
fetchsubject | zwraca temat wiadomości, opcjonalnie skrócony do ilości znaków podanej jako parametr funkcji imap_headerinfo(). |