imap php extension openserver
Чтение почты через IMAP в PHP
В PHP без проблем можно работать с почтой через IMAP, для этого есть все необходимые функции, подробнее на php.net.
Получение писем
Принцип работы следующий:
$imap = imap_open(«адрес», «e-mail», «пароль») – создает подключение к почтовому ящику. Далее, функция imap_search($imap, ‘ALL’) получает массив c индикаторами писем.
ALL | Все сообщения |
UNSEEN | Непрочитанные сообщения |
SEEN | Прочтенные сообщения (установлен флаг seen) |
NEW | Новые сообщения (впервые появилось в ящике в ходе текущей сессии) |
OLD | Старые сообщения |
ANSWERED | Сообщения с флагом answered (отвеченный) |
UNANSWERED | Неотвеченные сообщения |
DELETED | Удаленные сообщения |
UNDELETED | Не удаленные сообщения |
FLAGGED | Сообщения с установленным флагом flagged (важное) |
RECENT | Сообщения с флагом recent (недавнее сообщение) |
UNFLAGGED | Сообщения без установленных флагов |
ON «date» | Сообщения с датой, равной « date » |
BEFORE «date» | Сообщения с датой, до « date » |
SINCE «date» | Сообщения с датой, после « date » |
FROM «string» | Сообщения в поле From: которых присутствует «string » |
TO «string» | Сообщения в поле To: которых присутствует «string » |
SUBJECT «string» | Сообщения, у которых присутствует «string » в поле Subject |
BODY «string» | Сообщения содержащие «string » в теле |
TEXT «string» | Сообщения с текстом «string » |
KEYWORD «string» | Сообщения с ключевым словом «string» |
UNKEYWORD «string» | Сообщения, не имеющие ключевого слова «string » |
Далее массив обрабатывается в цикле, в примере происходит обход по всем письмам.
Установка флагов
seen | Сообщение прочитано |
answered | На сообщение отправлен ответ |
flagged | Сообщение отмечено как «важное» |
deleted | Сообщение отмечено как удалённое |
draft | Сообщение отмечено как черновик |
recent | Недавнее сообщение |
Можно установить сразу несколько флагов, разделяя их пробелами.
В примере, письмам, у которых в теме письма есть слово «заявка» устанавливается флаг «важное».
Удаление писем
Установка IMAP для PHP 5
Windows
Раскомментируйте (уберите перед строкой точку с запятой) extension=php_imap.dll в php.ini, в переменные среды (Пуск → Настройка → Система → Закладка «Дополнительно» → Переменные среды → Блок «Системные переменные» → Переменная Path → Изменить) добавить в конец строки пути к директории PHP — c:\
Unix/Linux
Расширение IMAP требует установки библиотеки с-client. Прочитать информацию об установке c-client на английском языке можно на php.net.
Быстрая установка c-client для FedoraCore/CentOS:
Установка c-client
Переходим в /usr/local
Скачать последнюю версию c-client можно командой:
В зависимости от версии операционной системы требуется та или иная версия c-client. Например, для ОС FedoraCore 4 потребуется версия imap-2006b.tar.Z, загрузим ее:
Список предыдущих версий c-client можно получить по ftp://ftp.cac.washington.edu/imap/old/.
Переходим в директорию:
Для 64-битных ОС необходимо отредактировать Makefile и заменить в нем EXTRACFLAGS= на EXTRACFLAGS=-fPIC
Выполняем для FedoraCore или RedHat:
или выполняем для FreeBSD:
Для других ОС соответственно «make slx», «make lnp», «make lrh» или «make lsu».
Переходим в директорию c-client/
Примечание: вместо imap-2006b указываете наименование директории в соответствии с выбранной версией c-client.
Установка пакета на примере PHP-5.2.17 для FedoraCore/CentOS
Сборка PHP 5
В Unix системе PHP 5 должен быть сконфигурирован с параметром —with-imap[=DIR]
где DIR — директория с установленным c-client.
Для сборки IMAP c поддержкой SSL необходимо добавить —with-imap-ssl
Перейдем в директорию /tmp
Загрузим последнюю версию PHP 5.2.13:
Перейдем в директорию php-5.2.13
Если был собран eAccelerator, то пересобираем его.
Возможные ошибки при конфигурировании PHP
Если при сборке возникает «configure: error: build test failed. Please check the config.log for details.», то смотрим config.log, в конце может быть указана информация: error: ‘U8T_CANONICAL’ undeclared (first use in this function)
Решение: Используется старая версия imap-200Xx, для версий 5.2.x нужно собирать с imapd.2006XXX.TAR.GZ или старше. См. http://bugs.php.net/bug.php?id=40132
Решение: Выполним копирование libc-client.a
Продолжая использовать сайт, вы даете согласие на обработку файлов Cookies и других пользовательских данных на условиях политики обработки cookie-файлов.
Отправка email в PHP: настройка OpenServer
В этом уроке мы научимся отправлять почту средствами PHP в рамках сервера OpenServer. О том, чем хорош этот сервер и о том, как его установить, я писал в статье «Установка и настройка OpenServer».
Начнем с того, что в PHP отправить email – очень просто. Для этого используется функция mail(). Чтобы отправить письмо нужно указать адрес получателя, тему письма и текст сообщения, а также специальный заголовок From, с указанием отправителя вот так:
Однако, вот незадача – если этот код выполнить на хостинге, то письмо будет отправлено и придёт получателю, а вот если мы используем OpenServer, то по умолчанию все наши письма будут просто записываться в специальный лог-файл. Убедиться в этом вы можете, заглянув во вкладку «Почта» настроек OpenServer.
И действительно, перейдя по этому пути, мы увидим наше письмо.
Но как же быть, если мы хотим на самом деле отправлять письма? Для этого нам нужен SMTP-сервер. Если кто не знает – электронная почта отправляется по специальному протоколу SMTP, а принимается по протоколу POP3. SMTP-сервер можно поднять самому, привязать к нему свой домен, и использовать свои адреса вроде x@myproject.ru. Мы же в рамках данного урока будем использовать SMTP-сервер Google.
Первым делом вам нужно создать новый аккаунт Google – просто перейдите в режиме инкогнито на https://gmail.com/ и создайте новую учетную запись. Я создал для примера kek777cheburek@gmail.com.
После этого переходим в настройки OpenServer и заполняем поля:
После этого жмем кнопку «Сохранить» и перезапускаем сервер.
После чего запускаем скрипт и проверяем свой ящик.
Стоит отметить, что данная инструкция является универсальной и данные настройки можно задать не только в OpenServer, но и в любом другом месте, где требуется конфигурация SMTP-сервера.
Если возникают проблемы с гуглопочтой и письмо почему-то не отправляется, почитайте комментарии. В частности может помочь вот это решение.
Почта в OpenServer. Настройка почты и отправка письма по SMTP в OpenServer
В этом уроке я покажу вам как настроить почту в OpenServer.
Дело в том, что когда мы тестируем сайт на локальном сервере, и пытаемся отправить письмо через форму обратной связи, то на почту сайта (нужный нам E-Mail) письма не приходят.
Такая же ситуация, когда мы пытаемся реализовать отправку почты в PHP. На реальный Email почта не приходит.
Дело в том, что по умолчанию, настройки OpenServer выставлены так, что все письма сохраняются в папку userdata/temp/email/. Они записываются в специальный лог-файл, который можно открыть обычным блокнотом.
И вот для того, чтобы письма сохранялись не в лог-файл, а отправлялись на нужный нам Email, нужно поменять настройки OpenServer. Давайте я покажу вам, где посмотреть уже отправленные вами письма в OpenServer, и как сделать так, чтобы они отправлялись по SMTP протоколу.
И так обо всем по порядку.
Вот в этом окне нам и нужно будет произвести определенные настройки, чтобы почта, которую мы отправляем в PHP доставлялась на нужный Email.
Как посмотреть отправленные письма в OpenServer
По умолчанию, способ отправки почты у нас выбран «Сохранять письма в папку userdata/temp/email/». Давайте перейдем в эту папку и убедимся в том, что отправленные ранее нами письма находятся именно в ней. Открываем папку программы OpenServer, в ней есть папка userdata, в ней — temp, а в папке temp — находится папка email.
Откройте находящийся там файл с помощью блокнота, и вы убедитесь в том, что отправка писем у вас работает. Просто они не отправляются на указанный в PHP email, а сохраняются вот здесь.
Как настроить отправку почты в OpenServer по SMTP
Чтобы письма реально отправлялись, нам нужно поменять настройки OpenServer. В качестве примера я буду использовать аккаунт Google и соответственно почту Gmail.
Очень важно! Для тестирования и разработки сайтов я рекомендую создать отдельный аккаунт Google (почту).
И так. Заполняем поля во вкладке «Почта» настроек программы OpenServer пошагово:
Кликаем «Сохранить» и в появившемся окне, которое предупреждает нас о том, что сервер будет перезапущен, кликаем ОК.
Вроде бы все и письма должны отправляться по SMTP. Но не все так просто.
Мы настроили OpenServer, но не Google аккаунт. А в аккаунте Google по умолчанию, доступ сторонних приложений запрещен и потому письма у вас пока все равно не будут отправляться.
Нам осталась самая малость — настроить аккаунт Google и сейчас я покажу как это сделать.
Настраиваем SMTP сервер от Google
По умолчанию, в Google с целью обеспечить максимальную безопасность аккаунта, доступ сторонних приложений отключен. А также, в настройках пересылки отключен протокол IMAP (доступ к Gmail других приложений по этому протоколу).
Вот о том, как включить доступ других приложений по протоколу IMAP к вашей почте Gmail, а также как разрешить этим приложениям доступ к вашему аккаунту, я сейчас и расскажу пошагово:
Но и это еще не все.
Вот теперь все. Почта в OpenServer полностью настроена и если вы отправите в PHP письмо, то оно будет успешно доставлено на тот Email, который вы укажете.
Видеоурок по данной теме
Вот небольшой пример отправки письма в PHP:
Описание
Список параметров
The server part, which is enclosed in ‘<' and '>‘, consists of the servers name or ip address, an optional port (prefixed by ‘:’), and an optional protocol specification (prefixed by ‘/’).
The server part is mandatory in all mailbox parameters.
Flag | Description |
---|---|
/service= service | mailbox access service, default is «imap» |
/user= user | remote user name for login on the server |
/authuser= user | remote authentication user; if specified this is the user name whose password is used (e.g. administrator) |
/anonymous | remote access as anonymous user |
/debug | record protocol telemetry in application’s debug log |
/secure | do not transmit a plaintext password over the network |
/imap, /imap2, /imap2bis, /imap4, /imap4rev1 | equivalent to /service=imap |
/pop3 | equivalent to /service=pop3 |
/nntp | equivalent to /service=nntp |
/norsh | do not use rsh or ssh to establish a preauthenticated IMAP session |
/ssl | use the Secure Socket Layer to encrypt the session |
/validate-cert | validate certificates from TLS/SSL server (this is the default behavior) |
/novalidate-cert | do not validate certificates from TLS/SSL server, needed if server uses self-signed certificates |
/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) |
The password associated with the username
Number of maximum connect attempts
Возвращаемые значения
Returns an IMAP stream on success or FALSE on error.