// is not a complete code but enough to clear out an entire mailbox.
// hope this can save your time :-)
<?php
if (isset($_REQUEST['DoNow']))
{
# PULL ADDITIONAL FILES
include_once ("common.php");
$conn = @imap_open("\{$server/$serverType}Trash", $user, $pass)
or die("Connection to folder failed");
$headers = @imap_check($conn);
($headers->Nmsgs > 0) or die("Trash is empty already !");
// delete email(s)
@imap_delete($conn,'1:*'); // to clear out an entire mailbox.
@imap_expunge($conn);
echo "Trash is empty.";
imap_close($conn);
}
else
{
echo "<form name='formA' action='".$_SERVER['PATH_INFO']."' method='POST'>"; ?>
Are you sure to empty trash ?
<p>
<input type="submit" value="Go Ahead" name="DoNow">
<input type="button" value="Cancel" name="Cancel" onClick='javascript:self.history.go(-1)'></form></p>
<?php
} ?>
imap_delete
(PHP 4, PHP 5)
imap_delete — Marque le fichier pour l'effacement, dans la boîte aux lettres courante
Description
Marque les messages msg_number pour l'effacement. L'effacement réel n'interviendra que lors de l'appel de la fonction imap_expunge() ou de imap_close() avec le paramètre optionnel CL_EXPUNGE.
Liste de paramètres
- imap_stream
-
Un flux IMPA retourné par la fonction imap_open().
- msg_number
-
Le numéro du message
- options
-
Vous pouvez le définir à FT_UID qui demande à la fonction de traiter l'argument msg_number comme un UID.
Valeurs de retour
Retourne TRUE.
Exemples
Exemple #1 Exemple avec imap_delete()
<?php
$mbox = imap_open("{imap.example.org}INBOX", "username", "password")
or die("Connexion impossible : " . imap_last_error());
$check = imap_mailboxmsginfo($mbox);
echo "Nombre de messages avant effacement : " . $check->Nmsgs . "<br />\n";
imap_delete($mbox, 1);
$check = imap_mailboxmsginfo($mbox);
echo "Nombre de messages après effacement : " . $check->Nmsgs . "<br />\n";
imap_expunge($mbox);
$check = imap_mailboxmsginfo($mbox);
echo "Nombre de messages après imap_expunge : " . $check->Nmsgs . "<br />\n";
imap_close($mbox);
?>
Notes
Note: Les boîtes aux lettres POP3 n'ont pas les flags de leurs messages de sauvegardés entre les connexions, donc, la fonction imap_expunge() doit être appelée pendant la même connexion pour que les messages marquées pour effacement soient réellement purgés.
imap_delete
09-Nov-2003 10:42
10-Apr-2003 06:05
I had some major issues deleting emails using this function. Using IIS 5.0 and a win based Mail Server, I could not delete the emails individually.
My script merely needed to check the emails and update the database for bounce backs, after which I simply wanted to erase all emails.
If imap_delete($mbox,$email->MsgNo) just isnt working for you, you can try using
imap_delete($mbox,'1:*');
to clear out an entire mailbox.
Hope this helps cause it drove me insane for about 5 hours. :)
