imap_open
(PHP 4, PHP 5, PHP 7)
imap_open — Открывает поток IMAP к почтовому ящику
Описание
$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);
?>