2006/06/20
# [xyzzy] [KaMailV3] 添付ファイルとして送信されたメールの表示
添付形式のメールを KaMailV3 で開けるように。あらかじめ,*kamail3-part-file* で設定したフォルダを作成しておく。一時ファイルを作らなくっても処理できそうですが,この方が簡単そうなので。message モードや summary モードで,x する。
;;; message/rfc822 な part の一時ファイル (defvar *kamail3-part-file* (merge-pathnames "_part_.eml" *message-attachment-directory*)) ;;; message/rfc822 な part は,何もいわずに表示するように。 (defun message-save-attachment (part &optional execute savefile) (unless (junk::mailstructure-p *message-structure*) (return-from message-save-attachment)) (let ((structure (message-get-part *message-structure* part))) (if (junk::mailstructure-p structure) (let* ((header (junk::mailstructure-headers structure)) (content (junk::mail-get-header-content "content-type" header)) ) (if (and execute (equal (caar content) "message") (equal (cdar content) "rfc822")) (let ((partfile *kamail3-part-file*)) (message-save-part structure partfile) (message-show partfile)) (progn (setq savefile (or savefile (message-save-dialog (junk::mail-get-filename header)))) (when (and savefile (message-save-part structure savefile)) (kamail3-message "saved: ~A" savefile) (when (and execute (no-or-yes-p "ファイルを実行しますか?\n~A" savefile)) (shell-execute savefile nil))) )) ) (kamail3-error "part not found: ~S" part))))
これまた,標準の関数を上書きしているので,要注意なのです。