(PHP 4, PHP 5, PHP 7, PHP 8)
imap_open — Открывает поток IMAP к почтовому ящику
$mailbox,$user,$password,$flags = 0,$retries = 0,$options = []
Открывает поток IMAP к mailbox.
Данная функция также может использоваться для открытия потока к серверам POP3 и NNTP, но часть функций и особенностей будет работать только с серверами IMAP.
mailbox
Имя почтового ящика состоит из сервера и пути к почтовому ящику на нем.
Специальное имя INBOX используется для почтового ящика
текущего пользователя. Имена почтовых ящиков, содержащих интернациональные
символы кроме входящих в печатное пространство ASCII, должны быть закодированы
с помощью imap_utf7_encode().
Передача в этот параметр непроверенных данных небезопасна, если включили директиву imap.enable_insecure_rsh.
Серверная часть, заключённая в фигурные скобки '{' и '}', состоит из имени или IP-адреса сервера, опционального порта (предварённого двоеточием) и опциональных спецификаций протокола (предварённых слешем '/').
Серверная часть является обязательной во всех параметрах почтового ящика.
Все имена, начинающиеся с { являются удалёнными именами и
имеют такой синтаксис "{" remote_system_name [":" port] [flags] "}"
[mailbox_name] где:
remote_system_name - полное доменное имя сервера, либо
IP-адрес в квадратных скобках.
port - необязательный параметр. Определяет порт сервера
flags - опциональные флаги, смотри таблицу ниже
mailbox_name - имя почтового ящика. По умолчанию INBOX
| Флаг | Описание |
|---|---|
/service=service |
сервис доступа к почтовому ящику. По умолчанию "imap" |
/user=user |
имя пользователя для входа на сервер |
/authuser=user |
удалённый пользователь для аутентификации; если указано, то это будет тот пользователь, чей пароль используется (например administrator) |
/anonymous |
удалённый доступ под анонимным пользователем |
/debug |
записывать телеметрию протокола в специальный лог-файл приложения |
/secure |
не передавать пароль по сети в виде нешифрованного текста |
/imap, /imap2,
/imap2bis, /imap4,
/imap4rev1 |
эквивалентно /service=imap |
/pop3 |
эквивалентно /service=pop3 |
/nntp |
эквивалентно /service=nntp |
/norsh |
не использовать rsh или ssh для установки преавторизованной сессии IMAP |
/ssl |
использовать SSL для шифрования сессии |
/validate-cert |
проверять сертификаты серверов TLS/SSL (поведение по умолчанию) |
/novalidate-cert |
не проверять сертификаты от серверов TLS/SSL. полезно для серверов с самоподписанным сертификатом |
/tls |
принудительно использовать start-TLS для шифрования
сессии и отвергать соединения с серверами его не поддерживающими |
/notls |
не применять start-TLS для шифрования сессии, даже если
сервер его поддерживает |
/readonly |
запрос открытия в режиме "только чтение" (только IMAP; игнорируется для NNTP и выдаёт ошибку для SMTP и POP3) |
userИмя пользователя
password
Пароль пользователя user
flags
flags - битовая маска из одной или нескольких
констант:
OP_READONLY - открыть почтовый ящик только для чтения
OP_ANONYMOUS - не использовать и не обновлять
.newsrc для новостей (только NNTP)
OP_HALFOPEN - открыть соединение, но не подключаться
к почтовому ящику для имён IMAP
и NNTP.
CL_EXPUNGE - автоматически удалять все помеченные для
удаления сообщения при закрытии почтового ящика
(смотрите imap_delete() и
imap_expunge())
OP_DEBUG - договорённости по протоколу отладки
OP_SHORTCACHE - короткое кеширование
(только elt)
OP_SILENT - не передавать события (внутреннее использование)
OP_PROTOTYPE - вернуть прототип драйвера
OP_SECURE - не производить безопасную аутентификацию
retriesМаксимальное количество попыток соединения
optionsПараметры для соединения. Для установки одного или нескольких параметров соединения можно использовать следующие (строки) ключи:
DISABLE_AUTHENTICATOR - запрещает свойства аутентификации
В случае успешного выполнения возвращает экземпляр IMAP\Connection или false, если возникла ошибка.
| Версия | Описание |
|---|---|
| 8.1.0 | Возвращает экземпляр IMAP\Connection; ранее возвращался ресурс (resource). |
Пример #1 Различные способы использования imap_open()
<?php
// Для подключения к серверу IMAP, работающему на порту 143 на локальной машине, сделать следующее:
$mbox = imap_open("{localhost:143}INBOX", "user_id", "password");
// Для подключения к серверу POP3, работающему на порту 110 на локальной машине, использовать:
$mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");
// Для подключения к серверу SSL IMAP или POP3, добавить /ssl после протокола
// specification:
$mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");
// Для подключения к серверу SSL IMAP или POP3 с самоподписанным сертификатом,
// добавить /ssl/novalidate-cert после спецификации протокола:
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");
// Для подключения к серверу NNTP, работающему на порту 119 на локальной машине, использовать:
$nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
// Для подключения к удалённому серверу, заменить "localhost" на имя или
// IP-адрес сервера, к которому вы хотите подключиться.
?>Пример #2 Пример использования imap_open()
<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password");
echo "<h1>Почтовые ящики</h1>\n";
$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");
if ($folders == false) {
echo "Неудачный вызов<br />\n";
} else {
foreach ($folders as $val) {
echo $val . "<br />\n";
}
}
echo "<h1>Заголовки в INBOX</h1>\n";
$headers = imap_headers($mbox);
if ($headers == false) {
echo "Неудачный вызов<br />\n";
} else {
foreach ($headers as $val) {
echo $val . "<br />\n";
}
}
imap_close($mbox);
?>