[Emacs] Wanderlustでヘッダー情報に基づき送信元情報を自動選択する方法。(SMTPサーバー、メールアドレス等)

[Emacs] Wanderlustでヘッダー情報に基づき送信元情報を自動選択する方法。(SMTPサーバー、メールアドレス等)

Emacsの高機能メーラーWanderlustのちょっと便利な機能を紹介します。

メールをビジネス用途、私用と諸々のケースで使う時に、例えばビジネス用のメールアドレスとプライベートのアドレスが違うケースがあるという事はよくあると思います。仕事で使う場合でもプロジェクトによりアドレスなどが変えるケースもあるかと思います。

色々と使い分けが必要なケースはありますが、これを手動でやっていると間違いが発生したりします。プライベートアドレスで仕事先に送ってしまったとか。

できればこういう事は自動で行ったほうがベターですが、Wanderlustではメールのヘッダー情報に基づいて、送信元情報を自動で変更する機能があるのでそれが使えます。

概要

具体的には届いたメールに返信をする際に、差出人(From)のメールアドレスや、もしくは宛先(ToやCc)を条件に、差出人情報を自動で選択させます。差出人情報には以下のようなものを含みます。

  • 各種メールアドレス (From, Bcc, Fccなど)
  • SMTPサーバー

サーバーも変えられるので、条件によって時にGmailから送ったり、Yahoo!から送ったり、その他プロバイダや自社メールサーバーから送ると行った事も可能です。アドレスだけでなくこの辺を完全に分けたい方もいるかと思います。

設定の概要

Wanderlustはパラメーターが多いですが、今回利用するのは主に "wl-template-alist" , "wl-draft-config-alist" です。その他細かいパラメーターも必要に応じてとなります。

まず先に概略を説明すると

パラメーター名 用途
wl-template-alist テンプレートの登録
wl-draft-config-alist テンプレートの選択条件を設定

といった感じになります。

上記2つのパラメーターを設定しておいて、後はフックで必要なタイミングで設定を反映させる形です。

スポンサーリンク
スポンサーリンク

wl-template-alist の設定例

まずデフォルトの送信者情報やSMTPサーバーを登録しています。その後、"wl-template-alist" で "default", "biz", "private" の3つのテンプレートを登録した例です。登録内容は全て仮のものです。

;; デフォルトの送信者情報
(setq wl-from "ほげっと <hogehogeeeee@gmail.com>"
      wl-bcc "hogehogeeeee@gmail.com"
      wl-fcc "%Sent:\"hogehogeeeee@gmail.com\"/clear@imap.gmail.com:993!"
      )

(setq wl-template-alist
      '(("default"                      ; テンプレート名(任意)
         ("From" . wl-from)             ; デフォルトの送信者を利用
         ("Bcc"  . wl-bcc)              ; デフォルトのbccを利用
         ("Fcc"  . wl-fcc)              ; デフォルトのfccを利用
         (wl-smtp-posting-server . "smtp.gmail.com")
         (wl-smtp-posting-user . "Gmailアカウント(メールアドレス)")
         (wl-local-domain . "gmail.com")
         (wl-smtp-authenticate-type ."login")
         (wl-smtp-posting-port . 465)
         (wl-smtp-connection-type . 'ssl)
         )
        ("biz"
         ;; bizテンプレートは送信者アドレスのみ変更
         ("From" . "ビジネス用アドレス <hogebizhoegbiz@gmail.com>")
         ("Bcc"  . "hogebizzzz@gmail.com")
         ("Fcc"  . wl-fcc)              ; デフォルトのfccを利用
         (wl-smtp-posting-server . "smtp.gmail.com")
         (wl-smtp-posting-user . "Gmailアカウント(メールアドレス)")
         (wl-local-domain . "gmail.com")
         (wl-smtp-authenticate-type ."login")
         (wl-smtp-posting-port . 465)
         (wl-smtp-connection-type . 'ssl)
         )
        ("private"
         ("From" . "プライベート用 <privattto@example.com>")
         ("Bcc"  . "privattto@gmail.com")
         ("Fcc"  . ""%Sent:\"priprivattto@example.com\"/clear@example.com:993!)
         (wl-smtp-posting-server . "example.com")
         (wl-smtp-posting-user . "privattto@example.com")
         (wl-local-domain . "example.com")
         (wl-smtp-authenticate-type ."plain")
         (wl-smtp-posting-port . 587)
         (wl-smtp-connection-type . 'starttls)
         )
        ))

wl-draft-config-alist の設定例

"wl-draft-config-alist" では自動でテンプレートを切り替える条件を記載します。最初のキーワードに "reply" と記載して、その後は条件を正規表現で記載し、最後に切り替えるテンプレートを指定します。リストは必要に応じて複数記載可能です。

(setq wl-draft-config-alist
      '((reply
         "^\\(To\\|Cc\\):.*@hogehogeeeee@gmail\\.com.*"
         (template . "default"))
        (reply
         "^\\(To\\|Cc\\):.*hogebizzzz@gmail\\.com.*"
         (template . "biz"))
        (reply
         "^\\(From\\):.+@foobar\\.com.*"
         (template . "biz"))
        (reply
         "^\\(To\\|Cc\\):.*privattto@example\\.com*"
         (template . "private"))
        ))

テンプレートを自動で切り替えるフックを設定

フックに登録することでテンプレートの動的変更が有効になります。

;; サマリモードから "A" (wl-summary-reply-with-citation) 等で
;; ドラフトバッファ作成時に動的変更を自動適用
(add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)

;; サマリモードから "E" (wl-summary-reedit) でメールを編集する時
;; にも自動的に動的変更を適用
(add-hook 'wl-draft-reedit-hook 'wl-draft-config-exec)

また wl-interactive-send を non-nil にすることで、送信前に変更内容を確認できるので有効にしておいた方が良いです。

;; メール送信時に動的変更を確認する
(setq wl-interactive-send t)

設定は以上です。

スポンサーリンク
スポンサーリンク