Nmsgs}",0); foreach ($result as $headers) { // Sort messages into either bounce or non-bounce messages $match = 0; // Match FROM if (stristr($headers->from, "mailer-daemon@") || stristr($headers->from, "postmaster@")) { $match++; } // Account for non-bounce messages from the above senders if (stristr($headers->subject, "Delayed Mail (still being retried)")) { $match--; } // Match Subject if (stristr($headers->subject, "failure notice") || stristr($headers->subject, "Delivery Status Notification (Failure)") || stristr($headers->subject, "Undelivered Mail Returned to Sender") || stristr($headers->subject, "Mail delivery failed: returning message to sender")) { $match++; } // Match Google Groups bounces if (stristr($headers->subject, "Posting error: ") && stristr($headers->from, "noreply@googlegroups.com")) { $match++; } if (!$match) { // This is not a bounce message if ($debug) { print $headers->msgno." [{$headers->uid}]: (NOT BOUNCE) (Subject: {$headers->subject}) (From: {$headers->from})\n"; } // Move message imap_mail_move($mbox, $headers->uid, $regularArchiveFolder, FT_UID); } else { // This is a bounce message if ($debug) { print $headers->msgno." [{$headers->uid}]: (BOUNCE) (Subject: {$headers->subject}) (From: {$headers->from})\n"; } // Fetch body $message = imap_body($mbox, $headers->uid, FT_UID); preg_match("/^To: (.*)$/m", $message, $email); $email = $email[1]; if ($debug) { print "Removing email: {$email}\n"; } /* REMOVE $email FROM YOUR DATABASE HERE */ // Move message imap_mail_move($mbox, $headers->uid, $bounceArchiveFolder, FT_UID); } } // Run this function to list all folders on the server // helps setting up the script function listFolders() { global $mbox; // Get a folder list $folders = imap_listmailbox($mbox, $imapServer, "*"); if ($folders) { foreach($folders as $val) { print $val."\n"; } } else { print "Error!\n"; } } ?>