imap_open

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_openОткрывает поток IMAP к почтовому ящику

Описание

imap_open(
    string $mailbox,
    string $user,
    string $password,
    int $flags = 0,
    int $retries = 0,
    array $options = []
): IMAP\Connection|false

Открывает поток 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);
?>

Смотрите также