2013-02-03 1 views
4

J'utilise un etodb de classe php trouvée iciemail PHP problème de base de données MySQL ne pas supprimer les e-mails depuis un serveur

http://www.phpclasses.org/package/3324-PHP-Retrieve-e-mail-messages-into-a-MySQL-database.html

Il vérifie un compte de messagerie et télécharge les messages dans une base de données MySQL. Cela fonctionne parfaitement, cependant à la fin de chaque boucle (en bouclant pour chaque message dans la boîte de réception) il supprime l'email. Je sais comment l'empêcher de supprimer le courrier électronique, mais le problème est pour une raison quelconque que le script n'introduira aucun nouveau courrier électronique dans la base de données à moins que je ne l'autorise à supprimer les messages OU la boîte de réception est complètement vide.

Voici la partie finale de la classe php référencée ci-dessus. Cette section boucle simplement chaque message et l'insère dans la base de données ET si elle est définie, elle supprimera les messages. Ma question en résumé est de laisser le script fonctionner correctement sans avoir besoin de supprimer des messages ou d'avoir une boîte de réception vide.

$total_messages = $this->num_message(); 

// IM ASSUMING THIS FOR LOOP IS NOT LOOPING MESSAGES CORRECTLY 
for ($i = 0; $i < $total_messages; $i++) { 


#Get first message 
$email = $this->email_get(); 

$ismsgdb = $this->db_add_message($email); // THIS INSERTS EACH MSG INTO DATABASE 

#Get store dir 
$dir = $this->dir_name(); 

$id_log = $this->add_db_log($email, 'Copy e-mail - start '); 

foreach($this->partsarray as $part){ 
if($part[text][type] == 'HTML'){ 
    #$message_HTML = $part[text][string]; 
    $this->db_update_message($part[text][string], $type= 'HTML'); 
}elseif($part[text][type] == 'PLAIN'){ 
    $message_PLAIN = $part[text][string]; 
    $this->db_update_message($part[text][string], $type= 'PLAIN'); 
}elseif($part[attachment]){ 
    #Save files(attachments) on local disc 

    // $message_ATTACH[] = $part[attachment]; 
    foreach(array($part[attachment]) as $attach){ 
     $attach[filename] = $this->mimie_text_decode($attach[filename]); 
     $attach[filename] = preg_replace('/[^a-z0-9_\-\.]/i', '_', $attach[filename]); 
     $this->add_db_log($email, 'Start coping file:"'.strip_tags($attach[filename]).'"'); 

     $this->save_files($this->newid.$attach[filename], $attach[string]); 
     $filename = $dir.$this->newid.$attach[filename]; 
     $this->db_add_attach($attach[filename], $filename); 
     $this->update_db_log('<b>'.$filename.'</b>Finish coping: "'.strip_tags($attach[filename]).'"', $this->logid); 
    } 
    // 

}elseif($part[image]){ 
    #Save files(attachments) on local disc 

    $message_IMAGE[] = $part[image]; 

    foreach($message_IMAGE as $image){ 
     $image[filename] = $this->mimie_text_decode($image[filename]); 
     $image[filename] = preg_replace('/[^a-z0-9_\-\.]/i', '_', $image[filename]); 
     $this->add_db_log($email, 'Start coping file: "'.strip_tags($image[filename]).'"'); 


     $this->save_files($this->newid.$image[filename], $image[string]); 
     $filename = $dir.$this->newid.$image[filename]; 
     $this->db_add_attach($image[filename], $filename); 
     $this->update_db_log('<b>'.$filename.'</b>Finish coping:"'.strip_tags($image[filename]).'"', $this->logid); 
    } 

} 

} 
$this->spam_detect(); 
$this->email_setflag(); 
$this->email_delete(); // WHEN I REMOVE THIS THE SCRIPT WONT GRAB NEW EMAILS 
$this->email_expunge(); // WHEN I REMOVE THIS THE SCRIPT WONT GRAB NEW EMAILS 




$this->update_db_log('Finish coping', $id_log); 


} 

Répondre

1

Mais votre problème est que dans la boucle, vous continuez à saisir le premier email.

#Get first message 
$email = $this->email_get(); 

La classe a un pointeur interne « $ this-> msgstr » que vous devez incrémenter pour obtenir le message suivant. Si vous définissez this à $ i + 1 avant d'appeler la fonction, vous devriez obtenir le message suivant.

#Get message determined b $i 
$this->msgeid = $i + 1; 
$email = $this->email_get(); 

(Note: sous la direction, maintenant vu la source)

+0

Merci! Je savais que c'était quelque chose de simple - votre solution a résolu mon problème. –

Questions connexes