トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

KaMail

Table of Contents

サマリ系

 サマリウィンドウから移動しないでメール閲覧&スクロール

RET で,現在行のメール表示。現在行のメールが表示されている場合は,次行を表示。

 ;;; メール見る or 次の行へ
 (defun kamail-view-mail-or-next-line ()
   (interactive)
   (let ((num (kamail-summary-getnum)))
     (kamail-select-view)
     (if (and (boundp 'kamail-number)
              (equal kamail-number num))
         (scroll-window 1)
       (progn
         (kamail-select-window-summary)
         (kamail-view-mail))))
   (kamail-select-window-summary))
 (define-key *kamail-list-map* #\RET 'kamail-view-mail-or-next-line)

C-RET で,現在行のメール表示。現在行のメールが表示されている場合は,前行を表示。

 ;;; メール見る or 前の行へ
 (defun kamail-view-mail-or-previous-line ()
   (interactive)
   (let ((num (kamail-summary-getnum)))
     (kamail-select-view)
     (if (and (boundp 'kamail-number)
              (equal kamail-number num))
         (scroll-window -1)
       (progn
         (kamail-select-window-summary)
         (kamail-view-mail))))
   (kamail-select-window-summary))
 (define-key *kamail-list-map* #\LFD 'kamail-view-mail-or-previous-line)

 メールリスト構築時 View バッファをクリア

別のフォルダの同じ番号のメールが表示されていると,更新されないので。

(add-hook '*kamail-list-mail-hook* 'my-kamail-clear-view-buffer)

受信系

 特別製メール受信

g でメール受信時,受信結果をダイヤログで通知します。メールを受信した場合は,現在のウィンドウ/バッファの状態により以下のような動作となります。

  • フォルダウィンドウがアクティブな場合は,*kamail-get-folder* を開いて,未読メールに移動します。
  • サマリウィンドウで *kamail-get-folder* が開いている場合は,リストをリロードし,未読メールに移動します。
  • それ以外のウィンドウでは,なにもしません。
 (defun kamail-special-pop3-get ()
   (interactive)
   (let* ((newmail (kamail-pop3-get))
          (already (equal *kamail-folder-current* *kamail-get-folder*))
          (bn (buffer-name (selected-buffer)))
          (fmode-p (string= bn *kamail-buffer-folder*))
          (smode-p (string= bn *kamail-buffer-summary*)))
     (if (< 0 newmail)
         (progn
           (when (or fmode-p
                     (and smode-p already))
             (when fmode-p
               (kamail-folder-current-set *kamail-get-folder*)
               ;Folderに移動して *kamail-get-folder*を開く
               (kamail-select-window-folder)
               (kamail-reverse-current-folder)
               (kamail-select-folder-this))
             (kamail-list-reload)
             ;未読メールまでカーソルを移動
             (while (kamail-mail-seenp)
               (next-line)))
           (refresh-screen)
           (message-box (concat (format nil "~D" newmail) "通のメールを受信した。") "亀手紙"))
       (message-box "受信すべきメールはないもよう。" "亀手紙"))))
 
 (define-key *kamail-folder-map*    #\g 'kamail-special-pop3-get)
 (define-key *kamail-list-map*      #\g 'kamail-special-pop3-get)
 (define-key *kamail-view-map*      #\g 'kamail-special-pop3-get)
 (define-key *kamail-multipart-map* #\g 'kamail-special-pop3-get)

 アカウント別メール受信

あらかじめ,アカウント毎の設定をしておきます。連想配列 *kamail-pop3-get-alist* に,アカウントの設定をしておきます。書式は,*kamail-pop3-get-list* に名前を付けたものとなっています。*kamail-pop3-get-list* に記述していないアカウントも設定可能です。また,複数のアカウントをまとめて設定することもできます。

 (setq *kamail-pop3-get-alist*
       '(("foo"  . (("foo.domain.jp" "foo" "pass" t)))
         ("bar"  . (("bar.domain.com" "bar" "pass" t)))
         ("piyo" . (("pi.domain.net" "user" nil t)
                    ("yo.damain.net" "user" nil t)))
         ))

i でこの関数を実行すると,ミニバッファに「POP3 Account: 」と表示されるので,上記で設定したアカウントの名前を入力します。とりあえず補完も効くので,先頭の 1 文字目は違う文字にしておいた方が便利かも。

 (defun kamail-pop3-get-separately (&optional account)
   (interactive)
   (let (*kamail-pop3-get-list*)
     (unless account
       (setq account (completing-read "POP3 Account: "
                                      (let (lst)
                                        (dolist (item *kamail-pop3-get-alist*)
                                          (push (car item) lst))
                                        (reverse lst))
                                      :must-match t)))
     (setq *kamail-pop3-get-list*
           (cdar (member account *kamail-pop3-get-alist* :test #'equal :key #'car)))
     (kamail-special-pop3-get)))
 
 (define-key *kamail-folder-map*    #\i 'kamail-pop3-get-separately)
 (define-key *kamail-list-map*      #\i 'kamail-pop3-get-separately)
 (define-key *kamail-view-map*      #\i 'kamail-pop3-get-separately)
 (define-key *kamail-multipart-map* #\i 'kamail-pop3-get-separately)

リンク

振分けフィールドの追加 - 眠る猫の頁
POPFile を使ったフィルタリング

最終更新時間:2005年06月25日 11時49分18秒 GMT