« 梅とプラムの謎 | Main | 知らない国の知らない音楽を聴きたい »



Thu, 13 Jul 2006

xyzzy で編集中のファイルを Thunderbird で送信する

Posted at Thu, 13 Jul 2006 in computer::xyzzy

xyzzy で編集しているファイル(またはバッファの内容)を Thunderbird に引き渡します。
コマンド→送信ボタンクリック の2アクションで簡単送信。
qwik.jp というメーリングリストと連動した Wiki があるのですが、ひとりでメモ帳として便利に使っているので、ささっとそのアドレスに遅れるように考えてみました。
添付ファイルとして送信するバージョンと、メール本文として送信するバージョンがありますが、本文で送信するバージョンはエラーが出やすいので、ソースコードなんかの場合は添付で送ってください(ただしファイルが存在しないと動作しません)

;;;;;;;;;;;;;;;;;;
;; ■ Thunderbird でメール送信
(defvar *thunderbird-exe-path* "thunderbird")
(defvar *thunderbird-setd-mailaddress* "******@qwik.jp")
(defun send-this-file ()
  "Thunderbird で編集中のファイルを添付ファイルとして送信"
  (interactive)
  (let ((file (get-buffer-file-name)))
    (when file
      (if (and (buffer-modified-p)
               (yes-or-no-p "ファイルを保存しますか?"))
          (save-buffer))
      (let* ((mail *thunderbird-setd-mailaddress*)
             (subj (format-date-string "[BackUp Files] %Y年%m月"))
             (body (concat (format-date-string "[%Y-%m-%d %H:%M:%S] ") (file-namestring file)))
             (exe *thunderbird-exe-path*)
             arg)
        (setf arg (format nil "to='~A',attachment='file://~A',subject='~A',body='~A~%'" mail file subj body))
        (call-process (format nil "\"~A\" -compose \"~A\"" exe arg))))))
(defun send-this-buffer ()
  "Thunderbird でバッファの内容を本文として送信"
  (interactive)
  (let ((str (buffer-substring (point-min) (point-max)))
        (buf (create-new-buffer "*SendMail Temp*"))
        (bufname (buffer-name (selected-buffer))))
    (set-buffer buf)
    (insert str)
    (goto-char (point-min))
    (perform-replace "\\([^\\\\]\\)\"" "\\1\\\\\"" nil t nil t)
    (let* ((mail *thunderbird-setd-mailaddress*)
           (subj (format-date-string "[Memo] %Y年%m月"))
           (body (concat (format-date-string "[%Y-%m-%d %H:%M:%S] ")
                         (format nil "~%~A~%~%" bufname)
                         (buffer-substring (point-min) (point-max))))
           (exe *thunderbird-exe-path*)
           arg)
      (setf arg (format nil "to='~A',subject='~A',body='~A~%'" mail subj body))
      (call-process (format nil "\"~A\" -compose \"~A\"" exe arg))
      )
    (delete-buffer buf)
    ))

« 梅とプラムの謎 | Main | 知らない国の知らない音楽を聴きたい »