Moduł Net::POP3

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Co to jest

Obiektowy moduł umożliwiający dostęp do serwerów POP3. Moduł ten obsługuje wszystkie komendy, które są potrzebne do obsługi serwera POP3, tj. ściąganie poczty, usuwanie poczty. Używając tego pakietu możemy logować się do serwera wspierającego bezpieczne uwierzytelnianie(np. APOP), a także do serwera nie obsługującego tej funkcji, czyli przesyłając hasło i login w postaci zwykłego niezaszyfrowanego tekstu.

Konstruktor

Konstruktor obiektu klasy Net::POP3 wygląda tak: new ( [ HOST ] [, OPTIONS ] ) Parametr HOST to adres serwera POP3 i jest opcjonalny. Jeżeli nie podamy tego parametru, wtedy możemy umieścić nazwę serwera w opcjach opisanych poniżej. Gdy nie umieścimy nazwy w żadnym z tych miejsc to zostanie użyty moduł Net::Config w celu ustalenia nazwy serwera.
Opcje są umieszczone w hashu i mogą to być:

  1. Host - adres serwera POP3. Może być pojedynczym skalarem albo referencją do tablicy z nazwami serwerów, które chcemy wypróbować.
  2. ResvPort - wybór portu
  3. Timeout - maksymalny czas oczekiwania na odpowiedź serwera POP3, w sekundach (domyślnie: 120)

Wybrane metody

Poniżej znajduje się opis wybranych metod:

user ( USER )
Wysyła komendę USER do serwera .
pass ( PASS )
Wysyła komendę PASS do serwera . Zwraca liczbę wiadomości w skrzynce pocztowej.
login ( [ USER [, PASS ]] )
Wysyła komendę USER i PASS do serwera. Jeżeli nie podamy hasła PASS wtedy Net::POP3 użyje do odszukania hasła modułu Net::Netrc . Jeżeli nie zostanie określona nazwa użytkownika wtedy moduł użyje aktualnej nazwy użytkownika. Zwraca liczbę wiadomości w skrzynce pocztowej. Jeżeli nie ma wiadomości w skrzynce serwer zwraca napis "0E0". Jeżeli wystąpił błąd podczas uwierzytelniania użytkownika zostaje zwrócony undef.
apop ( [ USER [, PASS ]] )
Uwierzytelnienie z serwerem jako USER z hasłem PASS. Podobne do "login", ale hasło nie jest przesyłane w postaci niezaszyfrowanego tekstu. Aby używać tej metody trzeba mieć zainstalowane moduł Digest::MD5 lub MD5 , w przeciwnym wypadku metoda zwróci undef.
banner ()
Zwraca banner serwera.
top ( MSGNUM [, NUMLINES ] )
Pobiera nagłowek wiadomości i pierwsze NUMLINES linii ciała wiadomości o numerze MSGNUM. Zwraca referencję do tablicy z pobranymi liniami tekstu z serwera.
list ( [ MSGNUM ] )
Jeżeli wywołujemy z argumentem, zwraca rozmiar wiadomości o numerze MSGNUM w bajtach. Jeżeli wywołujemy bez argumentu zwraca referencję do hasha. Klucze tego hasha to numery wszystkich wiadomości, a wartości to rozmiar wiadomości w bajtach.
get ( MSGNUM [, FH ] )
Pobiera ze skrzynki wiadomość o numerze MSGNUM. Jeżeli nie jest podany uchwyt pliku FH, wtedy zostaje zwrócona referencja do tablicy zawierającej linie tekstu odczytane z serwera. Jeżeli jest podany uchwyt pliku FH wtedy linie tekstu otrzymane z serwera sa drukowane do uchwytu pliku FH.
getfh ( MSGNUM )
Działa jak get(), ale zwraca uchwyt pliku.
popstat ()
Zwraca dwuelementową listę(ilość wszystkich wiadomości,rozmiar całej skrzynki w bajtach).
delete ( MSGNUM )
Oznacza wiadomość o numerze MSGNUM jako usuniętą ze skrzynki. Wszystkie tak oznaczone wiadomości zostaną usunięte ze skrzynki podczas zamykania połączenia z serwerem.
quit ()
Zamyka połączenie z serwerem POP3. Wszystkie wiadomości oznaczone jako usunięte są usuwane ze skrzynki.

Przykład użycia

Poniższy program wypisuje tematy wiadomości znajdujących się w skrzynce. #!/usr/bin/perl use Net::POP3; use warnings; use strict; my $username='abc'; my $password='def'; my $host='ghi.pl'; my $pop = Net::POP3->new($host, Timeout => 60);#konstruktor my $ilosc=$pop->login($username, $password); for(my $i=1;$i<=$ilosc;$i++){ my $wiadomosc = $pop->get($i); for my $line ( @$wiadomosc ) { if( $line =~ /^Subject:(.*)/ ) { print "$i>> $1\n"; last } } } $pop->quit;

Dodatkowe informacje

Pozostałe informacje znajdują się w dokumentacji modułu, można je wyświetlić wpisując polecenie perldoc Net::POP3 lub wejść na stronę http://perldoc.perl.org/Net/POP3.html.

Autor opracowania

A.R.

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.