получение письма по протоколу pop3

<?php
/*
*получение письма по протоколу pop3
*автор: disable
*07.09.07
*/

//задаем форматированный вывод, чтобы удобнее было читать ответы по строкам
echo '<pre>';

$login='example@mail.ru';
$pass='*******';

//подключаемся к серверу
$f=fsockopen('pop.mail.ru',110,$errno,$errstr,10);
if(!$f)
{
    die("Не удается подключиться к pop.mail.ru: [$errno] $errstr");
}

/*
*читаем статус ответа, он может быть либо +OK, либо -ERR
*/
echo $s=fgets($f);
if (strpos($s,'+OK')!==0) die('ошибка подключения');

//авторизируемся, для этого надо отправить имя пользователя
fwrite($f,"USER $login\r\n");

//отправляем пароль
fwrite($f,"PASS $pass\r\n");

echo $s=fgets($f);

/*
*если авторизация успешна, то сервер выбросит сколько писем в ящике,
*иначе будет ошибка авторизации
*/
echo $s=fgets($f);
if (strpos($s,'+OK')!==0) die('ошибка авторизации');

//для примера получим первое сообщение командой TOP 1 1000(если задать много строк, то возвратится все сообщение.
// Для получения сообщения целиком можно также воспользоваться командой RETR 1, в данном случаи, если сообщение короче 1000 строк это тоже самое) 
//сначала будут идти заголовки, потом пуcтая строка \r\n, потом само сообщение
//многострочные ответы почтовый сервер завершает строкой .\r\n

//посылка команды
fwrite($f,"TOP 1 1000\r\n");

$msg='';
$head='';

//чтение ответа
while (false!==($s=fgets($f)))
{
    //строка .\r\n данные закончились
    if ($s===".\r\n") break;

    //строка \r\n, заголовки закончились
    if ($s=="\r\n" && !$msg)
    $msg=' ';

    if (!$msg) $head.=$s;
    else $msg.=$s;
}

//выводим сообщение и заголовки
echo trim($head);
echo "\n\n---конец заголовков---\n\n";
echo trim($msg);

?>