最新 RSS

HIE no Murmur

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