2010-09-04 5 views
3

J'utilise les fonctions php imap pour analyser le message à partir de webmail. Je peux récupérer les messages un par un et les enregistrer dans DB. Après l'enregistrement, je souhaite supprimer le message de la boîte de réception. La fonction imap_delete ne fonctionne pas ici. Mon code est comme ça:imap_delete ne fonctionne pas

$connection = pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false);//connect 
$stat = pop3_list($connection);//list messages 

foreach($stat as $line) { 
    //save in db codes... 
    imap_delete($connection, $line['msgno']);//flag as delete 
} 

imap_close($connection, CL_EXPUNGE); 

J'ai aussi testé - imap_expunge($connection);
Mais il ne fonctionne pas. Les messages ne sont pas supprimés. S'il vous plaît aidez-moi ...

Répondre

6

Vous mélangez POP et IMAP.

Cela ne va pas fonctionner. Vous devez ouvrir la connexion avec IMAP. Voir cet exemple:

<?php 

$mbox = imap_open("{imap.example.org}INBOX", "username", "password") 
    or die("Can't connect: " . imap_last_error()); 

$check = imap_mailboxmsginfo($mbox); 
echo "Messages before delete: " . $check->Nmsgs . "<br />\n"; 

imap_delete($mbox, 1); 

$check = imap_mailboxmsginfo($mbox); 
echo "Messages after delete: " . $check->Nmsgs . "<br />\n"; 

imap_expunge($mbox); 

$check = imap_mailboxmsginfo($mbox); 
echo "Messages after expunge: " . $check->Nmsgs . "<br />\n"; 

imap_close($mbox); 
?> 
+3

Veuillez noter que shamittomar utilise imap_expunge APRÈS la suppression. Dans IMAP, vous devez d'abord marquer les messages pour suppression, et lorsque vous avez fini de les marquer, vous effectuez un appel de suppression pour finalement supprimer les messages marqués. –

+0

En fait, les noms des fonctions sont comme pop3. mais ils effectuent une fonctionnalité imap. –

+0

@Emrul, avez-vous essayé ce code? Sinon, collez le code source complet dans votre question. – shamittomar

0

En fait, les noms des fonctions sont comme pop3. mais ils effectuent une fonctionnalité imap. comme -

function pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false) 
{ 
    $ssl=($ssl==false)?"/novalidate-cert":""; 
    return (imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass)); 
} 
function pop3_list($connection,$message="") 
{ 
    if ($message) 
    { 
     $range=$message; 
    } else { 
     $MC = imap_check($connection); 
     $range = "1:".$MC->Nmsgs; 
    } 
    $response = imap_fetch_overview($connection,$range); 
    foreach ($response as $msg) $result[$msg->msgno]=(array)$msg; 
     return $result; 
}