Понадобилось мне автоматизировать сбор почты с аккаунта 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 для писем, полученных с этого момента").

Сохраните изменения.
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 раз) от того же Мануэля Лемоса.
Удачи вам, дорогие читатели!
Задавайте вопросы, пишите отчеты в комментариях.
А видео сегодня вам про отважного кенийского начинающего авиатора, который очень хочет в небо, но никак не может оторваться от земли
25 мая 2011
Alecfyz
Категории
Теги записи: 

У меня не получилось получить ответ((( Пишет Connecting to pop.gmail.com … и все((( Что может быть?
Перепроверяйте все еще раз. Только что прповерил на тестовом хосте, – все работает отлично.
возможно ли использовать состояние письма прочтено/непрочитано?
Например GMail не позволяет ставить эти флаги при работе по POP3. Поэтому и рождаются подобные мануалы.