[Emacs] Wanderlustでヘッダー情報に基づき送信元情報を自動選択する方法。(SMTPサーバー、メールアドレス等)
![[Emacs] Wanderlustでヘッダー情報に基づき送信元情報を自動選択する方法。(SMTPサーバー、メールアドレス等)](https://www.inabamasaki.com/wp-content/uploads/PHM13_0969.jpg)
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つのテンプレートを登録した例です。登録内容は全て仮のものです。
<span style="color: #546D7A;">;; </span><span style="color: #546D7A;">デフォルトの送信者情報 </span><span style="color: #FF516D;">(</span><span style="color: #C792EA;">setq</span> wl-from <span style="color: #C2E982;">"ほげっと <a href="mailto:hogehogeeeee%40gmail.com"><hogehogeeeee@gmail.com></a>"</span> wl-bcc <span style="color: #C2E982;">"hogehogeeeee@gmail.com"</span> wl-fcc <span style="color: #C2E982;">"%Sent:\"hogehogeeeee@gmail.com\"/clear@imap.gmail.com:993!"</span> <span style="color: #FF516D;">)</span> <span style="color: #FF516D;">(</span><span style="color: #C792EA;">setq</span> wl-template-alist '<span style="color: #C792EA;">(</span><span style="color: #D9F5DD;">(</span><span style="color: #C2E982;">"default"</span> <span style="color: #546D7A;">; </span><span style="color: #546D7A;">テンプレート名(任意) </span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"From"</span> . wl-from<span style="color: #74CBC4;">)</span> <span style="color: #546D7A;">; </span><span style="color: #546D7A;">デフォルトの送信者を利用 </span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"Bcc"</span> . wl-bcc<span style="color: #74CBC4;">)</span> <span style="color: #546D7A;">; </span><span style="color: #546D7A;">デフォルトのbccを利用 </span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"Fcc"</span> . wl-fcc<span style="color: #74CBC4;">)</span> <span style="color: #546D7A;">; </span><span style="color: #546D7A;">デフォルトのfccを利用 </span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-server . <span style="color: #C2E982;">"smtp.gmail.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-user . <span style="color: #C2E982;">"Gmailアカウント(メールアドレス)"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-local-domain . <span style="color: #C2E982;">"gmail.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-authenticate-type .<span style="color: #C2E982;">"login"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-port . 465<span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-connection-type . 'ssl<span style="color: #74CBC4;">)</span> <span style="color: #D9F5DD;">)</span> <span style="color: #D9F5DD;">(</span><span style="color: #C2E982;">"biz"</span> <span style="color: #546D7A;">;; </span><span style="color: #546D7A;">bizテンプレートは送信者アドレスのみ変更 </span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"From"</span> . <span style="color: #C2E982;">"ビジネス用アドレス <a href="mailto:hogebizhoegbiz%40gmail.com"><hogebizhoegbiz@gmail.com></a>"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"Bcc"</span> . <span style="color: #C2E982;">"hogebizzzz@gmail.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"Fcc"</span> . wl-fcc<span style="color: #74CBC4;">)</span> <span style="color: #546D7A;">; </span><span style="color: #546D7A;">デフォルトのfccを利用 </span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-server . <span style="color: #C2E982;">"smtp.gmail.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-user . <span style="color: #C2E982;">"Gmailアカウント(メールアドレス)"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-local-domain . <span style="color: #C2E982;">"gmail.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-authenticate-type .<span style="color: #C2E982;">"login"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-port . 465<span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-connection-type . 'ssl<span style="color: #74CBC4;">)</span> <span style="color: #D9F5DD;">)</span> <span style="color: #D9F5DD;">(</span><span style="color: #C2E982;">"private"</span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"From"</span> . <span style="color: #C2E982;">"プライベート用 <a href="mailto:privattto%40example.com"><privattto@example.com></a>"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"Bcc"</span> . <span style="color: #C2E982;">"privattto@gmail.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span><span style="color: #C2E982;">"Fcc"</span> . <span style="color: #C2E982;">""</span>%Sent:\"priprivattto@example.com\"/clear@example.com:993!<span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-server . <span style="color: #C2E982;">"example.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-user . <span style="color: #C2E982;">"privattto@example.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-local-domain . <span style="color: #C2E982;">"example.com"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-authenticate-type .<span style="color: #C2E982;">"plain"</span><span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-posting-port . 587<span style="color: #74CBC4;">)</span> <span style="color: #74CBC4;">(</span>wl-smtp-connection-type . 'starttls<span style="color: #74CBC4;">)</span> <span style="color: #D9F5DD;">)</span> <span style="color: #C792EA;">)</span><span style="color: #FF516D;">)</span>
wl-draft-config-alist の設定例
"wl-draft-config-alist" では自動でテンプレートを切り替える条件を記載します。最初のキーワードに "reply" と記載して、その後は条件を正規表現で記載し、最後に切り替えるテンプレートを指定します。リストは必要に応じて複数記載可能です。
<span style="color: #FF516D;">(</span><span style="color: #C792EA;">setq</span> wl-draft-config-alist '<span style="color: #C792EA;">(</span><span style="color: #D9F5DD;">(</span>reply <span style="color: #C2E982;">"^</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">(</span><span style="color: #C2E982;">To</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">|</span><span style="color: #C2E982;">Cc</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">)</span><span style="color: #C2E982;">:.*@hogehogeeeee@gmail\\.com.*"</span> <span style="color: #74CBC4;">(</span>template . <span style="color: #C2E982;">"default"</span><span style="color: #74CBC4;">)</span><span style="color: #D9F5DD;">)</span> <span style="color: #D9F5DD;">(</span>reply <span style="color: #C2E982;">"^</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">(</span><span style="color: #C2E982;">To</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">|</span><span style="color: #C2E982;">Cc</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">)</span><span style="color: #C2E982;">:.*hogebizzzz@gmail\\.com.*"</span> <span style="color: #74CBC4;">(</span>template . <span style="color: #C2E982;">"biz"</span><span style="color: #74CBC4;">)</span><span style="color: #D9F5DD;">)</span> <span style="color: #D9F5DD;">(</span>reply <span style="color: #C2E982;">"^</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">(</span><span style="color: #C2E982;">From</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">)</span><span style="color: #C2E982;">:.+@foobar\\.com.*"</span> <span style="color: #74CBC4;">(</span>template . <span style="color: #C2E982;">"biz"</span><span style="color: #74CBC4;">)</span><span style="color: #D9F5DD;">)</span> <span style="color: #D9F5DD;">(</span>reply <span style="color: #C2E982;">"^</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">(</span><span style="color: #C2E982;">To</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">|</span><span style="color: #C2E982;">Cc</span><span style="color: #546D7A; font-weight: bold;">\\</span><span style="color: #FFC400; font-weight: bold;">)</span><span style="color: #C2E982;">:.*privattto@example\\.com*"</span> <span style="color: #74CBC4;">(</span>template . <span style="color: #C2E982;">"private"</span><span style="color: #74CBC4;">)</span><span style="color: #D9F5DD;">)</span> <span style="color: #C792EA;">)</span><span style="color: #FF516D;">)</span>
テンプレートを自動で切り替えるフックを設定
フックに登録することでテンプレートの動的変更が有効になります。
<span style="color: #546D7A;">;; </span><span style="color: #546D7A;">サマリモードから "A" (wl-summary-reply-with-citation) 等で </span><span style="color: #546D7A;">;; </span><span style="color: #546D7A;">ドラフトバッファ作成時に動的変更を自動適用 </span><span style="color: #FF516D;">(</span>add-hook 'wl-mail-setup-hook 'wl-draft-config-exec<span style="color: #FF516D;">)</span> <span style="color: #546D7A;">;; </span><span style="color: #546D7A;">サマリモードから "E" (wl-summary-reedit) でメールを編集する時 </span><span style="color: #546D7A;">;; </span><span style="color: #546D7A;">にも自動的に動的変更を適用 </span><span style="color: #FF516D;">(</span>add-hook 'wl-draft-reedit-hook 'wl-draft-config-exec<span style="color: #FF516D;">)</span>
また wl-interactive-send を non-nil にすることで、送信前に変更内容を確認できるので有効にしておいた方が良いです。
<span style="color: #546D7A;">;; </span><span style="color: #546D7A;">メール送信時に動的変更を確認する </span><span style="color: #FF516D;">(</span><span style="color: #C792EA;">setq</span> wl-interactive-send t<span style="color: #FF516D;">)</span>
設定は以上です。