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))))
これまた,標準の関数を上書きしているので,要注意なのです。
コメント
トラックバック -
http://hie.s64.xrea.com/murmur/tb.cgi/20060620
