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

# imap_open

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

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

### Описание

function 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);
    ?>

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

- imap_close() - Закрывает поток IMAP

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open