* elmo-archive.el (elmo-archive-field-condition-match)
[elisp/wanderlust.git] / elmo / elmo-spam.el
index 1870d26..e197fe5 100644 (file)
@@ -122,11 +122,37 @@ If optional argument RESTORE is non-nil, unregister from spam list.")
 ;; for internal use
 (defun elmo-spam-message-fetch (folder number)
   (let (elmo-message-fetch-threshold)
+    (when enable-multibyte-characters
+      (set-buffer-multibyte nil))
     (elmo-message-fetch
      folder number
      (elmo-find-fetch-strategy folder number nil 'entire)
      'unread)))
 
+(defun elmo-spam-process-messages-as-mbox (folder numbers number-per-process
+                                                 function &rest args)
+  (with-temp-buffer
+    (while numbers
+      (let ((count 0))
+       (while (and numbers (< count number-per-process))
+         (insert "From MAILER-DAEMON@example.com\n")
+         (let ((begin (point)))
+           (insert
+            (with-temp-buffer
+              (elmo-spam-message-fetch folder (car numbers))
+              (buffer-string)))
+           (goto-char begin)
+           (while (re-search-forward "^>*From " nil t)
+             (goto-char (match-beginning 0))
+             (insert ?>)
+             (forward-line))
+           (goto-char (point-max))
+           (insert "\n\n"))
+         (setq count (1+ count)
+               numbers (cdr numbers)))
+       (apply function count args)
+       (erase-buffer)))))
+
 ;; generic implement
 (luna-define-method elmo-spam-message-spam-p ((processor elsp-generic)
                                              folder number &optional register)