WanderlustをCarbonEmacsにインストールしてIMAPでGmailを読めるようにする

PlaggerでMixi日記をGmailで読むことが出来るようになったので、今度はGmailEmacs上で読めるようにしてみようと思う。


IMAPが使えて便利なEmacsメーラーということで、発見したのがWanderlust


まずはWanderlustのインストール。
CarbonEmacsには半分デフォルトでワンダーラストが入っている。


Help > Carbon Emacs Package > Net-Install > Wanderlust
を選択すればインストール完了。簡単。


で、残るは設定。
基本的にEmacsでGmail IMAPを触る:とあるはてな社員の日記 のソースをコピーしてくれば問題ない、はずなのだが、上手くいかず。


原因の一つが、全角で記号が書かれている部分が存在すること。
ということで、別のソースを使わせていただいた。


http://az-yet.blogspot.com/2007/11/wanderlust-gmail.html:Wanderlust で Gmail を使用する


これを参考に、実際に設定した内容は以下の通り。


.emacs.elに以下を追加

;; wl
(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-other-frame "wl" "Wanderlust on new frame." t)
(autoload 'wl-draft "wl-draft" "Write draft with Wanderlust." t)

ホームディレクトリに.wlを作成

;;;  Wanderlust 設定ファイル

;;; 一般的なメーラの操作とGmailでの扱われ方の対応表
;;; https://mail.google.com/support/bin/answer.py?answer=77657

;; IMAP サーバの設定
(setq elmo-imap4-default-server "imap.gmail.com")
(setq elmo-imap4-default-user "your@email") ; メールアドレス
(setq elmo-imap4-default-authenticate-type 'clear)
(setq elmo-imap4-default-port '993)
(setq elmo-imap4-default-stream-type 'ssl)
(setq elmo-imap4-use-modified-utf7 t) ; 日本語フォルダ対策

;; SMTP サーバの設定
(setq wl-smtp-connection-type 'starttls)
(setq wl-smtp-posting-port 587)
(setq wl-smtp-authenticate-type "plain")
(setq wl-smtp-posting-user "goryugo33") ; 適宜修正
(setq wl-smtp-posting-server "smtp.gmail.com")
(setq wl-local-domain "gmail.com")

;; 一意なmessage-ID 動的IPアドレスの場合に設定。何か適当な文字列を。例えばメールアドレスとか。
(setq wl-from "表示名 <メアド>")


;;;------------------------------------------
;;; その他の設定
;; デフォルトのフォルダ
(setq wl-default-folder "%inbox")
;; 削除をGmail仕様に
(setq wl-dispose-folder-alist
      (cons '("^%inbox" . remove) wl-dispose-folder-alist))
;; フォルダ名補完時に使用するデフォルトのスペック
(setq wl-default-spec "%")
(setq wl-draft-folder "%[Gmail]/Drafts") ; Gmail IMAPの仕様に合わせて
(setq wl-trash-folder "%[Gmail]/Trash")
;; 画面を普通のメーラみたいな 3ペインに
(setq wl-stay-folder-window t)
;; 下書きディレクトリをローカルに設定する.
(setq wl-draft-folder "+Drafts")
(setq wl-folder-check-async t) ; 非同期でチェックするように
;; 大きなメッセージを分割して送信しない(デフォルトはtで分割する)
(setq mime-edit-split-message nil)
;; 起動時からオフラインにする
;; (setq wl-plugged nil)
;; サマリモードで日時を英語表示
;; (setq wl-summary-weekday-name-lang 'en)
;; HTMLファイルは表示しない。
;;(setq mime-setup-enable-inline-html nil)
;; メールを書くときは見出し画面を残して、フル画面にする
(setq wl-draft-reply-buffer-style 'keep)
;; 送信済みIMAPフォルダは送信と同時に既読にする
(setq wl-fcc-force-as-read t)
;; 最初からスレッドを開いておかない
;;(setq wl-thread-insert-opened nil)
;; スレッドを分割するしきい値(デフォルト:30)
(setq wl-summary-max-thread-depth 30)
;; 警告無しに開けるメールサイズの最大値(デフォルト:30K)
(setq elmo-message-fetch-threshold 500000)
;; プリフェッチ時に確認を求めるメールサイズの最大値(デフォルト:30K)
(setq wl-prefetch-threshold 500000)

;;;------------------------------------------
(setq wl-dispose-folder-alist
      (cons '("^%inbox" . remove) wl-dispose-folder-alist))


;;;------------------------------------------
;;; from,to のデコード指定。
(mime-set-field-decoder
 'From nil 'eword-decode-and-unfold-unstructured-field-body)
(mime-set-field-decoder
 'To nil 'eword-decode-and-unfold-unstructured-field-body)

;;;------------------------------------------
;; summary-mode ですべての header を一旦除去
(setq mime-view-ignored-field-list '("^.*"))

;; 表示するヘッダ。
(setq wl-message-visible-field-list
      (append mime-view-visible-field-list
        '("^Subject:" "^From:" "^To:" "^Cc:" 
          "^X-Mailer:" "^X-Newsreader:" "^User-Agent:"
          "^X-Face:" "^X-Mail-Count:" "^X-ML-COUNT:"
          )))

;; 隠すメールヘッダを指定。
(setq wl-message-ignored-field-list
      (append mime-view-ignored-field-list
      '(".*Received:" ".*Path:" ".*Id:" "^References:"
        "^Replied:" "^Errors-To:"
        "^Lines:" "^Sender:" ".*Host:" "^Xref:"
        "^Content-Type:" "^Content-Transfer-Encoding:"
        "^Precedence:"
        "^Status:" "^X-VM-.*:"
        "^X-Info:" "^X-PGP" "^X-Face-Version:"
        "^X-UIDL:" "^X-Dispatcher:"
        "^MIME-Version:" "^X-ML" "^Message-I.:"
        "^Delivered-To:" "^Mailing-List:"
        "^ML-Name:" "^Reply-To:" "Date:"
        "^X-Loop" "^X-List-Help:"
        "^X-Trace:" "^X-Complaints-To:"
        "^Received-SPF:" "^Message-ID:"
        "^MIME-Version:" "^Content-Transfer-Encoding:"
        "^Authentication-Results:"
        "^X-Priority:" "^X-MSMail-Priority:"
        "^X-Mailer:" "^X-MimeOLE:"
        )))


;;;---------------------------------------------------
;; ファイル名が日本語の添付ファイルをデコードする [semi-gnus-ja: 4332]
(eval-after-load "mime"
'(defadvice mime-entity-filename
(after eword-decode-for-broken-MUA activate)
"Decode eworded file name for *BROKEN* MUA."
(when (stringp ad-return-value)
(setq ad-return-value (eword-decode-string ad-return-value t)))))

;; ファイル名が日本語の添付ファイルをエンコードする [semi-gnus-ja: 6046]
(eval-after-load "std11"
  '(defadvice std11-wrap-as-quoted-string (before encode-string activate)
     "Encode a string."
     (require 'eword-encode)
     (ad-set-arg 0 (or (eword-encode-string (ad-get-arg 0)) "" )) ))


;; 添付ファイルがある場合は「@」を表示
(setq elmo-msgdb-extra-fields
(cons "content-type" elmo-msgdb-extra-fields))
(setq wl-summary-line-format-spec-alist
(append wl-summary-line-format-spec-alist
'((?@ (wl-summary-line-attached)))))
(setq wl-summary-line-format "%n%T%P%1@%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s")

ホームディレクトリに.foldersを作成

%inbox "受信トレイ"
%[Gmail]/Starred "☆"
+Drafts "下書き"
%work "仕事"
%[Gmail]/All Mail "全てのメール"
%[Gmail]/Sent Mail "送信済みメール"
%[Gmail]/Trash "ゴミ箱"
%[Gmail]/Spam "迷惑メール"

(%inbox以外は無くても問題なし。上記のように、%[Gmail]/なんたら で、Gmailの特殊フォルダにアクセスも可能。通常のラベルは%ラベル名で問題なし)


で、M-x wl でWanderlust起動。


簡単な操作方法などはここを参考にさせてもらった。


でこの後、HTMLメール、添付画像等を再生できるようにした(w3mインストールとか)のだが、苦戦しすぎて、ごちゃごちゃ色んなものをインストールし過ぎて、どれが有効だったのかよくわかっていない。
これらはもう少し理解が深まったらまとめてみようかと思います。

  • その他参考サイト

WanderlustGmailIMAP を使う(導入編)
http://www.tbrook.net/computer/index.cgi?1048035258


gmailimap機能をwanderlustから使ってみる
http://nabeo.blogspot.com/2007/11/gmailimapwanderlust.html


GmailIMAPで読む方法
http://209.85.175.104/search?q=cache:gflhHDFkVHEJ:gmail.1o4.jp/imap.html+gmail+wanderlust+trash&hl=ja&ct=clnk&cd=6&client=safari


多くの先人たちに感謝。