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