Emacs + Wanderlust: refile message to archive folder by year
One thing I always liked about Thunderbird is the archive feature. It can refile a message to a subfolder of the year the message was received, e.g. if you archive a message from 2013 it will get stored to Archive/2013
. This keeps the mailboxes managable and small enough.
During my migration to Wanderlust, an Emacs mail client, this feature was one of my most missed ones. So I decided to implement it myself:
(defun cjk-archive-message ()
(interactive)
(let ((folder wl-summary-buffer-elmo-folder) (msg-no (wl-summary-message-number)) date entity year)
(setq entity (elmo-message-entity folder msg-no))
(setq date (elmo-message-entity-field entity 'date 'string))
(when (eq date "")
(setq date (elmo-message-entity-field entity 'received 'string)))
(string-match "\\([1-9][0-9]\\{3\\}\\)" date)
(setq year (match-string 1 date))
(when (eq year nil)
(error "no valid date header field"))
(setq folder (concat ".Archive." year))
(if (funcall (symbol-function 'wl-summary-refile) msg-no folder)
(message "Refiled message to folder %s" folder)
(message "Error refiling message to folder %s" folder))))
Emacs rocks! :-)