2011-03-16: petite correction : les mots de passe peuvent contenir des caractères bizarres, il est préférable de les inclure dans des guillemets. Et d' "escaper" les guillemets.

2011-05-08: et d'escaper aussi les anti-slash !

<?php

function is_valid_user($username,$password)
{
   $i_server = "imap.xxxx.yyyyy.fr";
   $i_port   = 143;
   $fp = fsockopen ($i_server, $i_port, &$errno, &$errstr, 30);
   if (!$fp) {
	echo "$errstr ($errno)<br>\n";
	exit;
   }
   $reply = fgets($fp,1024);
   $encodedpassword = str_replace('\\', '\\\\', $password);
   $encodedpassword = str_replace('"', '\"', $encodedpassword);
   fputs ($fp, "1 LOGIN $username \"$encodedpassword\"\r\n");
   $reply =  fgets($fp,1024);
   $ok    =  substr($reply,0,4) == "1 OK";
   fputs ($fp, "1 LOGOUT\n");
   $reply =  fgets($fp,1024);
   fclose ($fp);
   return $ok;
}
?>