Работа с почтой средствами PHP

Работа с почтой средствами PHP


Часть первая.
Мы не будем разбирать как работать с функцией mail)
Сегодня разберем синтаксис pop протокола и как получить информацию о письмах на почтовом сервере.

Работать будем с помощью сокетов.
Подключение к серверу:

//Переменные которые нам понадобятся
$server="pop.bk.ru";
$port= 110;
$user='user_name';
$pass='password';

$mail = fsockopen($server,$port, $errno, $errstr, 10);
print fgets($mail, 1024);

если все удачно сервер вернет
+OK

Теперь пора авторизироваться, для этого посылаем запрос с именем пользователя на сервер:

fputs($mail, "USER $user\r\n");
print fgets($mail, 1024);

если все удачно сервер вернет
+OK

Теперь отправляем пароль:

fputs($mail, "PASS $pass\r\n");
print fgets($mail, 1024);

если все удачно сервер вернет
+OK

Собственно все, авторизация прошла успешно, теперь вы на сервере)
Давайте посмотрим что мы можем получить с сервера, например статистика:

fputs($mail, "STAT\r\n");
print fgets($mail, 1024);

если все удачно сервер вернет
+OK 2 12288
Данная строка гласит, что на сервере 2 письма общим весом 12288

Давайте посмотрим что именно за письма на сервере, для этого отправим запрос

fputs($mail, "LIST\r\n");
print get_data($mail);

Результат:
+OK 2 messages (12288 octets)
1 10790
2 677
.

Так же можно получить детальную информацию лишь по одному письму, для этого надо вызвать LIST с аргументом в виде номера письма:

fputs($mail, "LIST 2\r\n");
print fgets($mail);

Результат:
+OK 2 677

Можно получит заголовки письма, например что бы узнать кодировку или отправителя:

fputs($mail, "TOP 1 5\r\n");
print get_data($mail);

Результат вернет 5 строк из первого письма

Удаление письма:

fputs($mail, "DELE 2\r\n");
print fgets($mail);

Данный запрос пометит на удаление 2-е письмо, окончательно он будет удалено лишь после завершения работы с сервером.

снять все пометки на удаление можно послав следующий запрос:

fputs($mail, "RSET\r\n");
print fgets($mail);

Детальный просмотр сообщения:

fputs($mail, "RETR 1\r\n");
print get_data($mail);

Ну и на конец завершение работы:

fputs($mail, "QUIT\r\n");
fclose($mail);

Напоминая что завершать работ обязательно, иначе письма помеченные на удаления не будут удалены.
П.С.: когда будите экспериментировать с протоколом, советую завести специальную почту, которую не жалко угробить)

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru TEXT LINK Mister Wong
Качественное создание сайтов в Новосибирске
Или вы можете узнать как создать свой сайт самостоятельно
Но влюбом случае вам понадобится качественный Хостинг - компания www.StarsHost.ru

Читай с RSS. Не пропусти интересное)

Теги: ,

Вторник, 02 Мар 2010 PHP

5 комментариев на Работа с почтой средствами PHP

  1. Здравствуйте.
    Очень интересная статья.
    Но меня интересует, не собираетесь вы случайно написать про протокол IMAP? Я бы с удовольствием почитал бы.

  2. web-junior on 02 Мар 2010
  3. Прикольно! А как получить заголовок письма, это уже будет более значительно.

    Понравилось, пиши еще!

  4. Максим Нагайченко on 02 Мар 2010
  5. web-junior, идея интересная, думаю я ее затрону в ближайшее время

  6. DrNemo on 05 Мар 2010
  7. Спасибо, буду ждать статью с нетерпением!

  8. web-junior on 07 Мар 2010
  9. так просто оказывается)
    напишу себе локальный клиент..

  10. ИстинА on 15 Апр 2010

Ваш отзыв

Читать в Яндекс.Ленте
регистрация доменов
Зарегистрируй себе домен!
.RU - 99 рублей в год
www.
Блогун - реклама в блогах. Хостинг для блогов

Поиск

 

Комментарии