- (if (elmo-message-fetch spool-folder number
- (elmo-make-fetch-strategy 'entire)
- nil (current-buffer) 'unread)
- (condition-case nil
- (setq failure (not
- (elmo-folder-append-buffer
- folder
- flags
- set-number)))
- (error (setq failure t)))
- (setq dequeued t)) ; Already deletef from queue.
- (when failure
- ;; Append failed...
- (setq saved (elmo-folder-append-buffer
- (elmo-make-folder elmo-lost+found-folder)
- flags
- set-number)))
- (if (and (not dequeued) ; if dequeued, no need to delete.
- (or (not failure) ; succeed
- saved)) ; in lost+found
- (elmo-folder-delete-messages spool-folder (list number)))
- t)))
+ (when (elmo-message-fetch spool-folder number
+ (elmo-make-fetch-strategy 'entire)
+ 'unread)
+ (setq flags (or (elmo-message-flags-for-append folder (* -1 number))
+ (cond ((listp flag)
+ flag)
+ ;; for compatibility with 2.11.12 or earlier
+ ((eq flag t)
+ nil)
+ (t
+ (list flag)))))
+ (when (or (condition-case nil
+ (elmo-folder-append-buffer folder flags set-number)
+ (error))
+ ;; Append failed...
+ (elmo-folder-append-buffer
+ (elmo-make-folder elmo-lost+found-folder)
+ flags))
+ (elmo-folder-delete-messages spool-folder (list number)))))
+ ;; ignore failure (already dequed)
+ t))