par
Figaro90 » 21 mars 2013, 13:12
je me repond pour le problème de suppression du mail.
Apparement par imap_xxx on peut pas.
Voici une solution par socket en POP3
// delete mail via connexion POP3 par socket
function deleteMail ($MailNum = 1)
{
global $popServer, $srcFaxMail, $srcFaxPass;
$lenBuf = 512; // max (RFC 1939) the returned line a POP3 server can send is 512 bytes.
$sRet = 'ERR: ?';
while (true) {
// connexion
set_time_limit(90);
$fp = fsockopen($popServer, 110, $errno, $errstr);
if (!$fp) {$sRet = "fsockopen [$errno], [$errstr]"; break;}
// verif connexion
stream_set_blocking($fp,true);
$reply = fgets($fp, $lenBuf);
if (strpos($reply, "+OK")===false) {$sRet = "connection [$reply]"; break;}
// login
fwrite($fp, "USER $srcFaxMail\r\n");
$reply = fgets($fp,$lenBuf);
if (!strpos($reply, "+OK")===false) {$sRet = "login(user) [$reply]"; break;}
fwrite($fp, "PASS $srcFaxPass\r\n");
$reply = fgets($fp,$lenBuf);
if (strpos($reply, "+OK")===false) {$sRet = "login(pass) [$reply]"; break;}
// check message
fwrite($fp, "STAT\r\n");
$reply = fgets($fp,$lenBuf);
if (strpos($reply, "+OK")===false) {$sRet = "check message [$reply]"; break;}
$Vars = explode(" ",$reply);
$count = $Vars[1];
settype($count,"integer");
if(!$count || $count < $MailNum) {$sRet = "check message count=$count"; break;}
// delete mail
fwrite($fp,"DELE $MailNum\r\n");
$reply = fgets($fp,$lenBuf); $reply = str_replace("\r","",$reply); $reply = str_replace("\n","",$reply);
if (strpos($reply, "+OK")===false) {$sRet = "delete mail [$reply]"; break;}
$sRet = 'OK';
break;
}
// close
fwrite($fp,"QUIT\r\n");
$reply = fgets($fp,$lenBuf);
fclose($fp);
return $sRet;
}
je me repond pour le problème de suppression du mail.
Apparement par imap_xxx on peut pas.
Voici une solution par socket en POP3
[php]// delete mail via connexion POP3 par socket
function deleteMail ($MailNum = 1)
{
global $popServer, $srcFaxMail, $srcFaxPass;
$lenBuf = 512; // max (RFC 1939) the returned line a POP3 server can send is 512 bytes.
$sRet = 'ERR: ?';
while (true) {
// connexion
set_time_limit(90);
$fp = fsockopen($popServer, 110, $errno, $errstr);
if (!$fp) {$sRet = "fsockopen [$errno], [$errstr]"; break;}
// verif connexion
stream_set_blocking($fp,true);
$reply = fgets($fp, $lenBuf);
if (strpos($reply, "+OK")===false) {$sRet = "connection [$reply]"; break;}
// login
fwrite($fp, "USER $srcFaxMail\r\n");
$reply = fgets($fp,$lenBuf);
if (!strpos($reply, "+OK")===false) {$sRet = "login(user) [$reply]"; break;}
fwrite($fp, "PASS $srcFaxPass\r\n");
$reply = fgets($fp,$lenBuf);
if (strpos($reply, "+OK")===false) {$sRet = "login(pass) [$reply]"; break;}
// check message
fwrite($fp, "STAT\r\n");
$reply = fgets($fp,$lenBuf);
if (strpos($reply, "+OK")===false) {$sRet = "check message [$reply]"; break;}
$Vars = explode(" ",$reply);
$count = $Vars[1];
settype($count,"integer");
if(!$count || $count < $MailNum) {$sRet = "check message count=$count"; break;}
// delete mail
fwrite($fp,"DELE $MailNum\r\n");
$reply = fgets($fp,$lenBuf); $reply = str_replace("\r","",$reply); $reply = str_replace("\n","",$reply);
if (strpos($reply, "+OK")===false) {$sRet = "delete mail [$reply]"; break;}
$sRet = 'OK';
break;
}
// close
fwrite($fp,"QUIT\r\n");
$reply = fgets($fp,$lenBuf);
fclose($fp);
return $sRet;
}
[/php]