# imap_open

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

imap_open — Ouvre un flux IMAP vers une boîte aux lettres

### Description

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

Ouvre un flux IMAP vers la boîte aux lettres `mailbox`.

Cette fonction peut aussi être utilisée pour ouvrir des flots sur des serveurs POP3 et NNTP mais quelques fonctions et fonctionnalités ne sont disponibles qu'avec les serveurs IMAP.

### Liste de paramètres

`mailbox`

  Un nom de boîte aux lettres est constitué d'une adresse de serveur, et d'une adresse de boîte sur ce serveur. Le mot réservé `INBOX` représente la boîte aux lettres de l'utilisateur courant. Les noms de boîtes aux lettres qui contiennent des caractères spéciaux (en dehors de l'espace ASCII) doivent être encodés avec imap_utf7_encode().

  Avertissement

  Passer des données qui ne sont pas digne de confiance à ce paramètre est dangereux, sauf si, imap.enable_insecure_rsh est désactivé.

  L'adresse du serveur, mise entre accolades '{' et '}', est constituée du nom du serveur ou de son adresse IP, d'une spécification de protocole (commençant par '/') et d'un port optionnel (spécifié avec ':').

  Cette partie est obligatoire dans les paramètres de la boîte aux lettres.

  Tous les noms commençant par `{` sont des noms distants et sont sous la forme `"{" nom_systeme_distant [":" port] [flags] "}" [nom_mailbox]` où :

  - `remote_system_name` : Nom de domaine Internet ou une adresse IP de serveur entouré de guillemets.
  - `port` : numéro de port TCP (optionnel), la valeur par défaut est la valeur du port pour ce service.
  - `flags` : options, voir la table suivante.
  - `mailbox_name` : nom de la mailbox distante, par défaut : INBOX

  Flags optionnels pour les noms
  Flag | Description
  --- | ---
  `/service=`service | service pour l'accès à la mailbox, par défaut : "imap"
  `/user=`user | nom de l'utilisateur distant pour l'identification sur le serveur
  `/authuser=`user | utilisateur distance d'identification ; si spécifié, ce sera le nom de l'utilisateur dont le mot de passe est utilisé (e.g. administrator)
  `/anonymous` | accès distant en anonyme
  `/debug` | la télémétrie d'enregistrement du protocole dans les logs de déboguage de l'application
  `/secure` | ne transmet pas un mot de passe en clair à travers le réseau
  `/imap`, `/imap2`, `/imap2bis`, `/imap4`, `/imap4rev1` | équivalent de `/service=imap`
  `/pop3` | équivalent de `/service=pop3`
  `/nntp` | équivalent de `/service=nntp`
  `/norsh` | ne pas utiliser rsh ou ssh pour établir une session de pré identification IMAP
  `/ssl` | utilise `Secure Socket Layer` pour crypter la session
  `/validate-cert` | valide les certificats depuis le serveur TLS/SSL (c'est le comportement par défaut)
  `/novalidate-cert` | ne pas valider les certificats depuis le serveur TLS/SSL, nécessaire si le serveur utilise des certificats autosignés
  `/tls` | force l'utilisation de `start-TLS` pour chiffrer la session et rejette les connexions aux serveurs qui ne le supporte pas
  `/notls` | n'utilise pas `start-TLS` pour chiffrer la session, y compris avec les serveurs qui le supporte
  `/readonly` | demande un accès en lecture seule sur mailbox (IMAP uniquement ; ignoré sous NNTP, et une erreur avec SMTP et POP3)

`user`

  Le nom d'utilisateur

`password`

  Le mot de passe associé avec l'utilisateur `user`

`flags`

  `flags` est un masque de bit, qui peut prendre une ou plusieurs des valeurs suivantes :

  - `OP_READONLY` : Ouvre une boîte aux lettres en lecture seule
  - `OP_ANONYMOUS` : Ne pas utiliser, ou modifier le fichier .newsrc pour les news (NNTP uniquement)
  - `OP_HALFOPEN` : Pour les noms IMAP et NNTP, ouvre une connexion mais n'ouvre pas une boîte aux lettres.
  - `CL_EXPUNGE` : Supprime automatiquement la boîte aux lettres de la liste, lors de la terminaison du flux (voir aussi imap_delete() and imap_expunge())
  - `OP_DEBUG` : négociations de débogage du protocole
  - `OP_SHORTCACHE` : Cache court (`elt` uniquement)
  - `OP_SILENT` : Ne pas transmettre les événements (utilisation interne)
  - `OP_PROTOTYPE` : Retourne le prototype du driver
  - `OP_SECURE` : Ne pas effectuer des identifications non sécurisées
`retries`

  Le nombre maximal de tentatives de connexion.

`options`

  Paramètres de connexion ; les clés peuvent être utilisées pour définir un ou plusieurs paramètres de connexion :

  - `DISABLE_AUTHENTICATOR` - Désactive les propriétés d'authentification

### Valeurs de retour

Retourne une instance de IMAP\Connection en cas de succès, ou `false` si une erreur survient.

### Historique

Version | Description
--- | ---
8.1.0 | Retourne désormais une instance de IMAP\Connection ; auparavant, une resource était retournée.

### Exemples

Exemple #1 Différentes utilisations de imap_open()

`<?php
// Pour se connecter à un serveur IMAP fonctionnant sur le port 143 de la
// machine locale, faites ceci :
$mbox = imap_open("{localhost:143}INBOX", "user_id", "password");
// Pour se connecter à un serveur POP3 fonctionnant sur le port 110 du
// serveur local, faites ceci :
$mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");
// Pour se connecter à un serveur SSL IMAP ou POP3, ajoutez /ssl
// après la spécification du protocole :
$mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");
// Pour se connecter à un serveur SSL IMAP ou POP3 avec un certificat autosigné
// ajoutez /ssl/novalidate-cert après le protocole :
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");
// Pour se connecter à un serveur NNTP qui fonctionne sur
// le port 119 de la machine locale on peut utiliser la commande:
$nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
// Pour se connecter à un serveur distant, remplacez "localhost" par
// le nom ou l'adresse IP de la machine.
?>`

Exemple #2 Exemple avec imap_open()

`<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password");
echo "<h1>Mailboxes</h1>\n";
$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");
if ($folders == false) {
echo "Appel échoué<br />\n";
} else {
foreach ($folders as $val) {
echo $val . "<br />\n";
}
}
echo "<h1>en-têtes dans INBOX</h1>\n";
$headers = imap_headers($mbox);
if ($headers == false) {
echo "Appel échoué<br />\n";
} else {
foreach ($headers as $val) {
echo $val . "<br />\n";
}
}
imap_close($mbox);
?>`

### Voir aussi

- imap_close() - Termine un flux IMAP