Index: mailhandler.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mailhandler/mailhandler.module,v
retrieving revision 1.63
diff -u -F^f -r1.63 mailhandler.module
--- mailhandler.module	20 Jul 2004 14:53:17 -0000	1.63
+++ mailhandler.module	13 Sep 2004 04:40:38 -0000
@@ -24,8 +24,17 @@ function mailhandler_retrieve($mailbox) 
 
   if ($result) {
     $n = imap_num_msg($result);
+    $num_processed = 0;
     for ($i = 1; $i <= $n; $i++) {
       $header = imap_header($result, $i);
+
+      // only process new messages
+      if($mailbox["delete_after_read"] && $header->Unseen != 'U' && $header->Recent != 'N') {
+        continue;
+      }
+
+      $num_processed++;
+      
       $mime = explode(",", variable_get("mime", "TEXT/HTML,TEXT/PLAIN"));
       $origbody = mailhandler_get_part($result, $i, $mime[0]) ? mailhandler_get_part($result, $i, $mime[0]) : mailhandler_get_part($result, $i, $mime[1]);
 
@@ -56,12 +65,16 @@ function mailhandler_retrieve($mailbox) 
           mailhandler_node_submit($node, $header, $mailbox, $origbody);
         }
       }
-      imap_delete($result, $i);
+      // don't delete while we're only getting new messages
+      if($mailbox["delete_after_read"]) {
+        imap_delete($result, $i);
+      }
+      
       // switch back to original user
       mailhandler_switch_user();
     }
     imap_close($result, CL_EXPUNGE);
-    return t("Mailhandler retrieve successful: %n messages for %m", array ("%n" => $n, "%m" => $mailbox["mail"]));
+    return t("Mailhandler retrieve successful: %num_processed messages for %m", array ("%num_processed" => $num_processed, "%m" => $mailbox["mail"]));
   }
   else {
     if ($err){
@@ -560,6 +573,7 @@ function mailhandler_form($edit = array 
   $output .= form_textfield(t("From header"), "fromheader", $edit["fromheader"], 50, 125, t("Use this e-mail header to determine the author of the resulting node. Admins usually leave this field blank (thus using the <b>From</b> header), but <b>Sender</b> is also useful when working with listservs."));
   $output .= form_textarea(t("Default commands"), "commands", $edit["commands"], 50, 5, t("A set of commands which are added to each message. One command per line. See %link.", array ("%link" => l(t("Commands"), "admin/settings/mailhandler/help/#commands"))));
   $output .= form_textfield(t("Signature separator"), "sigseparator", $edit["sigseparator"], 50, 125, t("All text after this string will be discarded. A typical value is <b>\"-- \"</b> that is two dashes followed by a blank in an otherwise empty line. Leave blank to include signature text in nodes."));
+  $output .= form_checkbox(t("Delete messages after they are processed?"), "delete_after_read", 1, $edit["delete_after_read"], t("Uncheck this box to leave read messages in the mailbox.  They will not be processed again unless they become marked as unread."));
   $output .= form_checkbox(t("Enabled"), "enabled", 1, $edit["enabled"], t("Uncheck this box to temporarily disable cron processing for this mailbox."));
   $output .= form_submit(t("Submit"));
   if ($edit["mid"]) {
Index: mailhandler.mysql
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mailhandler/mailhandler.mysql,v
retrieving revision 1.5
diff -u -F^f -r1.5 mailhandler.mysql
--- mailhandler.mysql	14 Apr 2004 16:22:49 -0000	1.5
+++ mailhandler.mysql	13 Sep 2004 04:40:38 -0000
@@ -19,3 +19,4 @@
 ALTER TABLE mailhandler ADD imap tinyint unsigned not null;
 ALTER TABLE mailhandler ADD mime VARCHAR (128) AFTER security;
 ALTER TABLE mailhandler ADD mailto varchar(255) not null;
+ALTER TABLE mailhandler ADD delete_after_read tinyint unsigned not null default '1';
