imap_open

(PHP 3, PHP 4 , PHP 5)

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

Description

resource imap_open ( string mailbox, string username, string password [, int options] )

imap_open() retourne un flux IMAP en cas de succès, et FALSE en cas d'erreur. imap_open() peut aussi être utilisée pour ouvrir des flots sur des serveurs POP3 et NNTP.

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. 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. 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().

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

Tableau 1. Flags optionnels pour les noms

FlagDescription
/service=serviceservice pourl'accès à la mailbox, par défaut : "imap"
/user=usernom de l'utilisateur distant pour l'identification sur le serveur
/authuser=userutilisateur distance d'identification ; si spécifié, ce sera le nom de l'utilisateur dont le mot de passe est utilisé (e.g. administratur)
/anonymousaccès distant en anonyme
/debugla télémétrie d'enregistrement du protocole dans les logs de débogage de l'application
/securene 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
/norshne pas utiliser rsh ou ssh pour établir une session de pré identification IMAP
/sslutilise Secure Socket Layer pour crypter la session
/validate-certvalide les certificats depuis le serveur TLS/SSL (c'est le comportement par défaut)
/novalidate-certne pas valider les certificats depuis le serveur TLS/SSL, nécessaire si le serveur utilise des certificats auto-signés
/tlsforce l'utilisation de start-TLS pour crypter la session et rejète les connexions aux serveurs qui ne le supporte pas
/notlsn'utilise pas start-TLS pour crypter la session, y compris avec les serveurs qui le supporte
/readonlydemande un accès en lecture seule sur mailbox (IMAP uniquement ; ignoré sous NNTP, et une erreur avec SMTP et POP3)

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

Pour se connecter à un serveur IMAP, on peut utiliser la commande suivante :

Exemple 1. Différentes utilisations de imap_open()

<?php
// Pour se connecter à un serveur IMAP fonctionnant sur le port 143 de la
// machine locale, faîtes ceci :
$mbox  = imap_open("{localhost:143}INBOX","user_id","password");

// Pour se connecter à un serveur POP3 fonctionnant sur le port 110 du
// serveur local, faîtes 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 auto-signé
// 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("{votre.hote.imap:143}", "nom_utilisateur", "mot de passe");
echo
"<h1>Mailboxes</h1>\n";

$folders = imap_listmailbox($mbox, "{votre.hote.imap:143}", "*");
if (
$folders == false) {
   echo
"Appel échoué<br />\n";
} else {
   while (list(
$key, $val) = each($folders)) {
       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 {
   while (list (
$key,$val) = each ($headers)) {
       echo
$val . "<br />\n";
   }
}

imap_close($mbox);
?>