Windowsっぽいフォワード
Outlook とか使ってる人にフォワードするとこの添付ファイル何?とか言われるから作った。せめて text/plain な別パートにしようかとも思ったけど、そうすると Beckey で別のタブになるからそれもナシ。
summary-mode で "f" を押すと
Select Forward Method: R)fc822 W)indows like
って表示される。"r" で今まで通り。"w" で Windows っぽくフォワードする。
(define-key wl-summary-mode-map "f" 'wl-summary-forward-select) (defun wl-summary-forward-like-windows () "windows っぽいフォワード" (interactive) (let ((summary-buf (current-buffer)) (message (wl-summary-message-string 'maybe)) (folder (wl-summary-buffer-folder-name)) (number (wl-summary-message-number)) to subject forward-subject date in-reply-to cc references newsgroups mail-followup-to content-type content-transfer-encoding from body-beg body) (with-temp-buffer (set-buffer-multibyte t) (insert (string-to-multibyte message)) (setq subject (std11-field-body "Subject")) (setq subject (or (and subject (eword-decode-string (decode-mime-charset-string subject wl-mime-charset))) "") forward-subject (wl-draft-forward-make-subject subject)) (setq to (std11-field-body "To")) (setq to (or (and to (eword-decode-string (decode-mime-charset-string to wl-mime-charset))) "")) (setq from (std11-field-body "From")) (setq from (and from (eword-decode-string (decode-mime-charset-string from wl-mime-charset)))) (setq date (std11-field-body "Date")) (setq date (or (and date (let ((datevec (timezone-parse-date date))) (format "%s/%s/%s %s" (aref datevec 0) (aref datevec 1) (aref datevec 2) (aref datevec 3)))) "")) (setq references (nconc (std11-field-bodies '("References" "In-Reply-To")) (list (std11-field-body "Message-Id")))) (setq references (delq nil references) references (mapconcat 'identity references " ") references (wl-draft-parse-msg-id-list-string references) references (wl-delete-duplicates references) references (when references (mapconcat 'identity references "\n\t"))) (setq content-type (std11-field-body "Content-Type")) (setq content-transfer-encoding (std11-field-body "Content-Transfer-Encoding")) (goto-char (point-min)) (or (re-search-forward "\n\n" nil t) (search-forward (concat mail-header-separator "\n") nil t)) (setq body (buffer-substring (point) (point-max)))) ;; draft buffer の準備 (wl-draft (list (cons 'To "") (cons 'Subject forward-subject) (cons 'References references)) content-type content-transfer-encoding body t folder number) ;; いらないタグの削除 (wl-draft-body-goto-top) (save-excursion (let* ((ret (mime-edit-find-inmost))) (let ((bb (nth 1 ret)) (be (nth 2 ret)) (eb (nth 3 ret))) (when eb (goto-char eb) (when (looking-at mime-edit-end-tag-regexp) (delete-region (match-beginning 0) (match-end 0)))) (when (and bb be) (delete-region bb be))))) (when (looking-at mime-edit-single-part-tag-regexp) (delete-region (match-beginning 0) (match-end 0))) ;; citation header の挿入 (insert "\n---------- Forwarded Message ----------\n") (insert "From: " from "\n") (insert "Subject: " subject "\n") (insert "Date: " date "\n") (insert "To: " to "\n") ;; 最後の準備 (mail-position-on-field "To") (setq wl-draft-config-variables (append wl-draft-parent-variables wl-draft-config-variables)) (wl-draft-config-info-operation wl-draft-buffer-message-number 'save) (run-hooks 'wl-draft-forward-hook) (with-current-buffer summary-buf (run-hooks 'wl-summary-forward-hook)) (run-hooks 'wl-mail-setup-hook))) (defun wl-summary-forward-select () "フォワード方法を選択" (interactive) (let ((c (read-char "Select Forward Method: R)fc822 W)indows like"))) (cond ((eq c ?r) (wl-summary-forward)) ((eq c ?w) (wl-summary-forward-like-windows)) (t (message "Cancel")))))
- [2007-03-19]フックを実行するようにしてみる。フォワードマークが付くようになった。
- [2007-03-12]Forwarded Message の Subject に "Forward" が付いてたのを修正。
- [2007-03-12]"f" を押したときにフォワード方法を選択できるように。