Jak połączyć się z POP3/IMAP? [PHP] #1

emailNaszym celem jest dziś za pomocą kilku linijek kodu PHP połączyć się z serwerem poczty przychodzącej POP3/IMAP i wyświetlanie na naszej stronie nagłówków wiadomości e-mail.

Sprawa nie jest taka trudna na jaką by wyglądała. Otóż PHP daje prawie gotowe rozwiązanie – funkcje IMAP.

Pierwsze co musimy wykonać to nawiązać  strumień połączenia z serwerem poczty przychodzącej. Służy do tego funkcja imap_open(). Na początek trochę tłumaczeń z dokumentacji.

<?php
resource <strong>imap_open</strong> ( string <tt>$mailbox</tt> , string <tt>$username</tt> , string <tt>$password</tt> [, int <tt>$options</tt> = NIL [, int <tt>$n_retries</tt> = 0 [, array <tt>$params</tt> = <strong><tt>NULL</tt></strong> ]]] )
?>

Funkcji podajemy domyślnie 3 argumenty lecz są dodatkowe parametry których nie będziemy na razie omawiać. Pierwszy argument mailbox.

„{” remote_system_name [„:” port] [flags] „}” [mailbox_name]

, gdzie

remote_system_name – nazwa domeny lub adres IP serwera poczty przychodzą
port – numer portu, jest różny w zależność czy serwer to POP3 czy IMAP oraz czy serwer używa SSL
flags – dodatkowe flagi opis poniżej
mailbox_name – zdalny folder skrzynki pocztowej, domyślnie INBOX

Flagi

/service=service usługi dostępu do skrzynki pocztowej, domyślnie imap
/user=user zdalny logowanie użytkownika
/authuser=user zdalne logowanie użytkownika, którego hasło jest w użyciu
/anonymous zdalnego logowanie jako użytkownik anonimowy
/debug record protocol telemetry in application’s debug log
/secure do not transmit a plaintext password over the network
/imap/imap2/imap2bis/imap4/imap4rev1 odpowiednik /service=imap
/pop3 odpowiednik /service=pop3
/nntp odpowiednik /service=nntp
/norsh do not use rsh or ssh to establish a preauthenticated IMAP session
/ssl logowanie w trybie bezpiecznym
/validate-cert sprawdzanie czy serwer posiada certyfikat, domyślnie właczone
/novalidate-cert nie sprawdzanie czy serwer posiada certyfikat
/tls force use of start-TLS to encrypt the session, and reject connection to servers that do not support it
/notls do not do start-TLS to encrypt the session, even with servers that support it
/readonly request read-only mailbox open (IMAP only; ignored on NNTP, and an error with SMTP and POP3)

Teraz abym mógł się połączyć ze swoim serwerem wpiszę odpowiednio wypełnioną funkcje:

<?php
$mbox = imap_open ("{mail.sebcza.pl:110/pop3/novalidate-cert}INBOX", "test@sebcza.pl", "tajnehaslo");
?>

mail.sebcza.pl jest domena mojego serwera poczty i wykorzystuje port 110. Dodatkowe flagi to /pop3 ponieważ korzystam z serwera pop3 oraz /novalidate-cert ponieważ ten serwer chyba nie posiada certyfikatów.. Kolejne argumenty to kolejno login poczty oraz hasło.