コマンドラインからMessage-IDを指定してメールを開く方法。それをOrgMode(Emacs)からも開けるようにする。

ThunderLink :: Thunderbird向けアドオンを入れる。たったこれだけで

thunderbird.exe -thunderlink thunderlink://messageid=メッセージID

という風に-thunderlinkオプションを使って起動すれば指定したメールが開ける。
Thunderbirdが起動していなかったら単品メールウィンドウが、既に起動済みなら対象メールが選択された状態になる。


説明ではOSのシェルにurl handler関連付けるように書かれているが、必要でなければやらなくて良い。
というのも、元々やりたかったのが「OrgMode(on NTEmacs)において、メール本文ではなくメールへのリンクを埋め込みたい」だったので、thunderlinkをEmacsから開けるようにした。
まず、ffapでリンクを認識するためにffap-url-regexpを修正。

(setq ffap-url-regexp (replace-regexp-in-string "mailto:" "thunderlink:\\\\|mailto:" ffap-url-regexp)) ;; for ThunderLink

次に認識したURLを開くための設定をする。

;; ↓Cygwin専用。Cygwinじゃない場合は適宜修正する。
(defun browse-url-thunderlink (url &optional new-window)
  (interactive (browse-url-interactive-arg "URL: "))
  (if (string-match "^thunderlink://" url)
      (progn
        (start-process (concat "thunderbird " url) nil "cygstart" "thunderbird.exe" "-thunderlink" url)
        t)
    nil)
  )
(unless (listp browse-url-browser-function) (setq browse-url-browser-function (list (cons "." browse-url-browser-function))))
(add-to-list 'browse-url-browser-function '("^thunderlink:" . browse-url-thunderlink))

で、OrgModeにも対応。

(add-hook 'org-load-hook
          #'(lambda ()
              (add-to-list 'org-link-types "thunderlink")
              (org-make-link-regexps)
              (add-hook 'org-open-link-functions 'browse-url-thunderlink)
              ))