Забираем почту по POP3 с GMail, Hotmail and Windows Live и Yahoo! Mail

Почтальон, POP3Понадобилось мне автоматизировать сбор почты с аккаунта GMail. Сайт написан на php. Очень кстати оказался php-класс широко известного в узких кругах Мануэля Лемоса - pop3class (Скачан 414 раз).

В обзоре рассказывается, как использовать данный php-класс для работы с популярными почтовыми сервисами и даны рекомендации, как обеспечить прием только новых сообщений, избегая загрузки всех сообщений каждый раз, если вы не удаляете почту из "входящих".

Почта Gmail и  аккаунты Google App

Перед тем как использовать класс с гуглопочтой вам необходимо разрешить доступ к аккаунту по протоколу POP3. Для этого зайдите в веб-интерфейсе в нужный аккаунт, перейдите в настройки и активируйте вкладку "Forwarding and POP/IMAP" (в русском интерфейсе - "Пересылка и POP/IMAP" ) и выберите опцию "Enable POP for mail that arrives from now on" (в русском интерфейсе - "Включить POP для писем, полученных с этого момента").
gmail-pop3-options
Сохраните изменения.

POP-сервер GMail отвечает на 995 порту и требует SSL/TLS шифрование. Логином является полное имя почтового ящика, включая @  и имя домена:

 $pop3 = new pop3_class;
 $pop3->hostname = "pop.gmail.com";
 $pop3->port = 995;
 $pop3->tls = 1;
 $user = "account@gmail.com";
 $password = "account password";

Почта Hotmail и аккаунты Windows Live

Отличие от GMail здесь только в том, что не нужно ничего предварительно включать в настройках. В остальном же все так же:

 $pop3 = new pop3_class;
 $pop3->hostname = "pop.live.com";
 $pop3->port = 995;
 $pop3->tls = 1;
 $user = "account@hotmail.com";
 $password = "account password";

Yahoo! Mail

Жадные Яхи предоставляют POP3 только для платных аккаунтов. Но тем не менее, приведем и для них код. В целом все похоже на GMail и Hotmail. Отличие в том, что в имени не нужно добавлять знак AT ( @ )  и домен:

 $pop3 = new pop3_class;
 $pop3->hostname = "pop.mail.yahoo.com";;
 $pop3->port = 995;
 $pop3->tls = 1;
 $user = "account";
 $password = "account password";

Остальные почтовые сервисы

настраиваются, как правило, аналогично и опять же как правило, инструкция по настройке почтовых программ-клиентов есть на странице помощи каждой почтовой системы. Вам нужно только подставить нужные значения в приведенный выше код.

Большой проблемой при работе с протоколом POP3 может стать прием только новых сообщений. Дело в том, что не все почтовые сервисы позволяют удалять сообщения с сервера после их приема. То есть, нам нужно каким-то образом узнать, принимали мы это конкретное сообщение или нет. Но POP3 не предоставляет для этого никаких инструментов. Единственный выход в этой ситуации - сохранять историю принятых сообщений, например, в локальной базе данных, отслеживая принятые письма по их уникальным идентификаторам.

Здесь нам поможет метод ListMessages, который вернет список всех входящих писем, если вызвать его с пустым первым параметрfм. Если же в качетве второго параметра передать единицу, то он вернет массив с уникальными идентификаторами всех писем.
Теперь нам достаточно посмотреть в нашей локальной БД список приянтых писем, исключить их идентификаторы из общего принятого списка и принять только новые.

Конечно, это не самый эффективный метод, если в вашем ящике ежедневно появляется несколько сотен новых писем, но, к сожалению, в некоторых случаях это единственный выход.

Чтобы использовать pop3class, вам необходимо скачать также класс MIME-парсер MIME E-mail message parser (Скачан 188 раз) и класс SSL-прослойку Simple Authentication and Security Layer (Скачан 172 раз) от того же Мануэля Лемоса.

Удачи вам, дорогие читатели!

Задавайте вопросы, пишите отчеты в комментариях.

А видео сегодня вам про отважного кенийского начинающего авиатора, который очень хочет в небо, но никак не может оторваться от земли :)

Вы можете оставить комментарий , или использовать trackback - ссылки с вашего сайта.

4 комментария to “Забираем почту по POP3 с GMail, Hotmail and Windows Live и Yahoo! Mail”

  1. У меня не получилось получить ответ((( Пишет Connecting to pop.gmail.com … и все((( Что может быть?

    • Alecfyz:

      Перепроверяйте все еще раз. Только что прповерил на тестовом хосте, – все работает отлично.

  2. denislan:

    возможно ли использовать состояние письма прочтено/непрочитано?

    • Alecfyz:

      Например GMail не позволяет ставить эти флаги при работе по POP3. Поэтому и рождаются подобные мануалы.

Оставить комментарий

Читать RSS в Google

Добавить в Google Reader

Читать RSS в Яндексе

Добавить в Яндекс-ленту

Rambler's Top100