imap_open

(PHP 4, PHP 5, PHP 7)

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

Описание

imap_open ( string $mailbox , string $username , string $password , int $options = 0 , int $n_retries = 0 , array $params = array() ) : resource

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

username

Имя пользователя

password

Пароль пользователя username

options

options - битовая маска из одной или нескольких констант:

  • 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 - не производить безопасную аутентификацию

n_retries

Максимальное количество попыток соединения

params

Параметры для соединения. Для установки одного или нескольких параметров соединения можно использоватиь следующие (строки) ключи:

  • DISABLE_AUTHENTICATOR - запрещает свойства аутентификации

Возвращаемые значения

В случае успеха возвращает поток IMAP, а в случае неудачи false.

Примеры

Пример #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);
?>

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