[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

24. メイルの送信

Emacsでメッセージを送信するには、 まずコマンド(C-x m)を打って `*mail*'バッファを選択して初期化します。 続いて、このバッファでテキストとヘッダを編集し、 最後に別のコマンド(C-c C-sC-c C-c)を 打ってメッセージを送信します。

C-x m

送信メッセージを作成する(compose-mail)。

C-x 4 m

同様だが、別のウィンドウにメッセージを表示する (compose-mail-other-window)。

C-x 5 m

同様だが、新たにフレームを作る (compose-mail-other-frame)。

C-c C-s

メイル(mail)モードでは、メッセージを送信する (mail-send)。

C-c C-c

メッセージを送信しメイルバッファを閉じる (mail-send-and-exit)。

コマンドC-x mcompose-mail)は、 `*mail*'という名前のバッファを選択し、 そのバッファ内に送信するメッセージの雛型を作ります。 C-x 4 mcompose-mail-other-window)は、 別のウィンドウで`*mail*'バッファを選択し、 直前のカレントバッファは見えるようにしておきます。 C-x 5 mcompose-mail-other-frame)は、 新たにフレームを作って`*mail*'バッファを選択します。

メイル作成バッファはEmacsの普通のバッファなので、 メイルを書いている途中で別のバッファに切り替えて あとで戻ってくる(あるいは戻らない)ことができます。 メッセージを書きかけのまま送信していないのに再度C-x mコマンドを使うと、 Emacsは古いメッセージを消してよいかどうか聞いてきます。 nと答えると、書きかけの古い内容の`*mail*'バッファが 選択されるので、古いメッセージを書き終えて送信できます。 C-u C-x mでもこのようにできます。 メッセージを送信すると`*mail*'バッファは『変更なし』と印が付けられ、 つぎにC-x mを使っても確認を求めないようにします。

`*mail*'バッファに書きかけのメッセージを残したまま 別のメッセージを送信したい場合には、 M-x rename-uniquelyを使って`*mail*'バッファを別の名前に 変更してください(see section その他のバッファ操作)。 そして、C-x mコマンドや他のコマンドで 新しい`*mail*'バッファを作ります。 こうすれば個々のメイルバッファを独立に編集できます。


24.1 メイルバッファの形式

メッセージにはテキスト、つまり、本文以外にも、 誰が、いつ、誰に、なぜ送ったかなどを示すヘッダフィールドがあります。 `Date'(日付)や`Sender'(送り手)などのヘッダフィールドは、 メッセージを送信するときに自動的に作成されます。 受け手(宛先)などの他のヘッダフィールドは、 メッセージがきちんと送信されるように あなた自身が指定する必要があります。

メイル(mail)モードには、 ヘッダフィールドを編集するためのコマンド群があり、 一部のヘッダフィールドはバッファ内で自動的に初期化されます。 通常の編集コマンドを使ってヘッダフィールドに挿入したり編集したりできます。

バッファ内のつぎの行は、ヘッダとテキストを分ける特別な区切り行です。

 
--text follows this line--

この行のあとに続くものはすべてメッセージのテキストになります。 このまえにあるものはヘッダです。 実際に送信されるメッセージには、この区切り行自身は含まれません。 区切り行として使うテキストは変数mail-header-separatorで制御します。

以下は、メイルバッファ内のヘッダとテキストの例です。

 
To: gnu@gnu.org
CC: lungfish@spam.org, byob@spam.org
Subject: The Emacs Manual
--Text follows this line--
Please ignore this message.

24.2 メイルヘッダフィールド

メイルバッファ内のヘッダフィールドは、 行頭のフィールド名で始まり、コロン`:'で区切られます。 フィールド名(およびメイルアドレス)では、 大文字小文字の区別はありません。 コロンと省いてもよい白文字のあとにフィールドの内容を書きます。

ヘッダフィールドには好き勝手にどんな名前でも使えますが、 一般にはきちんと意味のある標準的なフィールド名だけを使います。 以下は送信メッセージで一般的に使われるフィールドの一覧です。

` To'

このフィールドには、 メッセージの送付先であるメイルアドレスを書く。 1つより多くのアドレスを書く場合には、 空白ではなくコンマで区切る。

` Subject'

`Subject'フィールドの内容としては、 メッセージが何についてのものかを書く。 `Subject'フィールドが有効な理由は、 大部分のメイル閲覧プログラムが、 各メッセージの本文ではなく`Subject'を使ってメイル一覧を表示するため。

` CC'

このフィールドには`To'フィールドと同様に メッセージ送付先の追加メイルアドレスを書く。 ただし、これらのアドレスにあげられた人達は、 自分宛てのメッセージだとは思わないように。

` BCC'

このフィールドにはメッセージ送付先の追加アドレスを書くが、 実際に送付されるメッセージのヘッダにはこのフィールドは含まれない。 このようにして送信したコピーをブラインドカーボンコピー (blind carbon copies)と呼ぶ。

すべての送信メッセージのブラインドカーボンコピーを自分自身に送るには、 変数mail-self-blindtを設定する。

` FCC'

このフィールドには、メッセージを送信するたびに Emacsがそのコピーを追加していくファイルの名前を指定する。 ファイルがrmail形式であれば、Emacsはメッセージをrmail形式で書き込む。 それ以外の場合、Emacsはシステムメイルファイル形式で書き込む。

送信メッセージを編集するたびに毎回決まったファイル名を `FCC'フィールドに指定するには、 変数mail-archive-file-nameにそのファイル名を設定する。 送信メッセージから`FCC'フィールドを削除しない限り、 メッセージを送信するたびにこのファイルにメッセージが書き込まれる。

` From'

`From'フィールドは、メイル送信時に使っているアカウントが自分のもの でない場合に、送信者が本当は誰なのかを示すために用いる。 返信には通常このフィールドが使われるので、 `From'フィールドの内容は正しいメイルアドレスであること。 自分で`From'フィールドを指定しなければ、 Emacsはデフォルトで変数user-mail-addressの値を使う。

` Reply-to'

返信を別のアドレスに送ってほしい場合にこのフィールドを使う。 (rmailを含む)大部分のメイル閲覧プログラムは、 `From'のアドレスより`Reply-to'のアドレスを優先して 自動的に返信を送る。 `Reply-to'フィールドをヘッダに加えておけば、 `From'のアドレスが返信時に引き起こすであろうどんな問題でも回避できる。

すべての送信メッセージの`Reply-to'フィールドに決まったアドレスを 指定するには、 変数mail-default-reply-toに(文字列で)そのアドレスを設定する。 こうすると、mailは指定された`Reply-to'フィールドを 付けてメッセージを初期化する。 メッセージを送信するまえに、 必要なら、このフィールドを削除したり変更したりできる。 Emacsが動き始めたときに環境変数REPLYTOが設定されていれば、 その環境変数の値で変数mail-default-reply-toを初期化する。

` In-reply-to'

このフィールドは返信しようとしているメッセージについての情報を書く。 メイルシステムによっては、この情報を使ってメイルを互いに関連付ける。 rmailでメッセージに返信するときには、rmailが自動的にこのフィールドを 埋めるので、気にする必要はない(see section メイルの閲覧rmail)。

` References'

このフィールドには、関連する以前のメッセージのメッセージID一覧を書く。 rmailでメッセージに返信するときには、 rmailが自動的にこのフィールドを埋める。

ヘッダフィールド、`To'、`CC'、`BCC'、`FCC'は、 いくつあってもよく、しかも、これらの各フィールドには コンマで区切って複数のアドレスを書けます。 こうすれば、メッセージの送付先をいくつでも指定できます。 `To'、`CC'、`BCC'フィールドでは継続行を使えます。 これらのフィールドに続く白文字で始まる行は、 すべてフィールドの一部であると見なします。 以下は継続行を用いた`To'フィールドの例です。

 
To: foo@here.net, this@there.net,
  me@gnu.cambridge.mass.usa.earth.spiral3281

メッセージを送信するときに、`From'フィールドを書いてないと、 Emacsがかわってこの項目を補います。 変数mail-from-styleでその書式を(以下のように)制御します。

nil

`king@grassland.com'のように電子メイルアドレスだけを補う。

parens

`king@grassland.com (Elvis Parsley)'のように、 電子メイルアドレスと氏名を補う。

angles

`Elvis Parsley <king@grassland.com>'のように、 氏名と電子メイルアドレスを補う。

system-default

システムに`From'フィールドを埋めさせる。


24.3 メイルの別名

`~/.mailrc'という名前のファイルでメイルの別名 (mail alias)を定義できます。 メイルの別名とは、複数のメイルアドレスやそれらのグループに付けた 覚えやすい短い名前のことです。 他の多くのメイルプログラムと同様に、 `To'、`From'、`CC'、`BCC'、`Reply-to'のフィールドに 別名が現れるとEmacsは別名を展開し、 当該フィールドの先頭に`Resent-'を付加します。

`~/.mailrc'ファイルで別名を定義するには、 以下のような形式の行を書きます。

 
alias shortaddress fulladdresses

fulladdressesは1つ以上のメイルアドレスであり、 shortaddressをそれらのアドレスに展開します。 複数のアドレスを書く場合は、空白で区切ります。 アドレスに空白が含まれる場合は、 アドレス全体をダブルクォート`"'で括ります。

たとえば、gnu@gnu.orgとあなたのローカルアドレスに対する別名を maingnuとするには、 つぎのように書きます。

 
alias maingnu gnu@gnu.org local-gnu

また、Emacsは`.mailrc'ファイル内の「取り込み」コマンドも認識します。 つぎのように書きます。

 
source filename

ファイル`~/.mailrc'は主に他のメイル閲覧プログラムが使用するものです。 このファイルには、他にもさまざまなコマンドを指定できます。 Emacsは、このファイル内の別名定義(`alias')と 取り込みコマンド(`source')以外はすべて無視します。

Emacsの中だけでメイルの別名を定義する別の方法は、 define-mail-aliasコマンドを使うことです。 このコマンドは、別名と完全なアドレスを順次尋ねてきます。 これを使えば、つぎのようにして 個人の`.emacs'ファイルで別名を定義できます。

 
(define-mail-alias "maingnu" "gnu@gnu.org")

define-mail-aliasは、 mail-aliasesという変数に別名を追加記録します。 Lispのリスト操作に慣れているなら、 mail-aliasesに直接設定してもかまいません。 変数mail-aliasの初期値はtとなっていて、 Emacsは`.mailrc'から別名定義を読み込むという指定です。

`~/.mailrc'のかわりに使う別のファイルの名前は、 変数mail-personal-alias-fileに設定します。

通常、Emacsはメッセージ送信時に別名を展開します。 送信に先だってみずからメイルアドレスを展開する必要はありませんが、 メイルが実際にどこへ送信されるか確認したければ別名を展開することもできます。 そうするには、コマンドM-x expand-mail-aliasesを使います。 アドレスを保持するメイルヘッダに書かれている すべてのメイルの別名を展開します。

もし好みに合うなら、メイルの別名を打ち込んだらただちに 略語展開することもできます(see section 略語の利用法)。 この機能を使うにはつぎのようにします。

 
(add-hook 'mail-setup-hook 'mail-abbrevs-setup)

これを個人の`.emacs'ファイルに入れてもかまいません。 See section フック。 この機能を使う場合には、define-mail-aliasのかわりに define-mail-abbrevを使う必要があります。 前者は、このパッケージでは動作しません。 メイル用略語パッケージでは、mail-aliasesのかわりに 変数mail-abbrevsを使い、さらに、 すべての別名は小文字に変換されます。

メイル用略語パッケージには、C-c C-amail-interactive-insert-alias)コマンドもあって、 別名を(補完を使って)読み取り、その定義をポイント位置に挿入します。 この機能は、Emacsが別名を通常展開しない本文や`Subject'フィールドなど を編集しているときに便利です。

単語の区切り文字を挿入したあとで略語が展開されることに注意してください。 しかし、C-nM->を再定義して 展開が行われるように設定することもできます。 つぎのようにします。

 
(add-hook 'mail-setup-hook
          '(lambda ()
             (substitute-key-definition
               'next-line 'mail-abbrev-next-line
               mail-mode-map global-map)
             (substitute-key-definition
               'end-of-buffer 'mail-abbrev-end-of-buffer
               mail-mode-map global-map)))

24.4 メイルモード

メイルバッファで使われるメジャーモードはメイル(mail)モードです。 テキスト(text)モードに似ていますが、 プレフィックスC-cで始まる多くの特別なコマンドがあります。 これらのコマンドはすべてメッセージの編集や送信に関するものです。 さらに、メイル(mail)モードでは、文字`%'を単語の切れ目と定義しています。 これは、単語コマンドを使ってメイルアドレスを編集するときに便利です。

mailコマンドやそれに関連するコマンドが自動的に設定する バッファでは、普通、メイル(mail)モードを使います。 しかし、ファイルを訪問しているバッファをメイル(mail)モードに 切り替えることもできます。 これは、メッセージの草稿をファイルに保存してあるときなどに便利です。


24.4.1 メイルの送信

メイル(mail)モードには、編集したメッセージを送信するコマンドが2つあります。

C-c C-s

メッセージを送信し、メイルバッファは選択したままにする (mail-send)。

C-c C-c

メッセージを送信し、別のバッファを選択する (mail-send-and-exit)。

C-c C-smail-send)はメッセージを送信して メイルバッファに『変更なし』の印を付けます (変更フラグをクリアする)。 しかし、メッセージバッファは選択したままですから、 メッセージを修正して(新たな受け手に)再度送信できます。 C-c C-cmail-send-and-exit)はメッセージを送信してから、 ウィンドウを削除するか別のバッファに切り替えます。 メイルバッファは使い終えたので、 デフォルトではその選択優先度は最低になります。 普通はこのコマンドでメッセージを送信します。

ファイルを訪問しているバッファでは、メッセージ送信後でも変更フラグを クリアしません。 ファイルを保存した場合にだけ変更フラグをクリアすべきだからです。 この結果、同一メッセージを2回送信しようとしても警告は出ません。

非ASCII文字を含むメッセージを送信するときには、 それらをコーディングシステム(see section コーディングシステム) で符号化する必要があります。 通常、コーディングシステムは、 選択した言語環境(see section 言語環境)によって 自動的に指定されます。 変数sendmail-coding-systemを設定すると、 送信メイルのコーディングシステムを明示できます。

このように決めたコーディングシステムが、 メッセージ内の文字を扱えない場合には、 Emacsは、可能なコーディングシステムの一覧を表示して、 使用するコーディングシステムを問い合わせます。


24.4.2 メイルヘッダの編集

メイル(mail)モードには、特定のヘッダフィールドへ移動したり ヘッダのアドレスを補完する特別なコマンドがあります。

C-c C-f C-t

ヘッダフィールド`To'へ移動する。 フィールドがなければ作成する(mail-to)。

C-c C-f C-s

ヘッダフィールド`Subject'へ移動する。 フィールドがなければ作成する(mail-subject)。

C-c C-f C-c

ヘッダフィールドへ`CC'移動する。 フィールドがなければ作成する(mail-cc)。

C-c C-f C-b

ヘッダフィールド`BCC'へ移動する。 フィールドがなければ作成する(mail-bcc)。

C-c C-f C-f

ヘッダフィールド`FCC'へ移動する。 フィールドがなければ作成する(mail-fcc)。

M-TAB

メイルアドレスを補完する(mail-complete)。

ポイントを特定のヘッダフィールドに移動するコマンドは5つあって、 すべてプレフィックスC-c C-fで始まります (`C-f'は『フィールド』(fields)のf)。 これらは上に示してあります。 当該フィールドが存在しなければ、 これらのコマンドはそのフィールドを作成します。 これらの特定のフィールドに移動するコマンドを用意したのは、 これらのフィールドを編集する可能性が高いからです。

`To:'、`CC:'、`BCC:'などのメイルアドレスを含む ヘッダフィールドを編集中には、 M-TABmail-complete)と打てば メイルアドレスを補完できます。 完全な名前が決定できるならば、アドレスに対応する完全な名前を挿入します。 変数mail-from-styleと同様に、 変数mail-complete-styleは、 完全な名前を挿入するのか、どのスタイルを使うのかを制御します (see section メイルヘッダフィールド)。

補完のため使う正しいメイルアドレスは、 ローカルのユーザー名一覧と個人のメイルの別名からとられます。 正しいメイルアドレスの情報源を追加することもできます。 これに関するオプションを調べるには、カスタマイズバッファを使ってください。

メッセージの本文でM-TABと打つと、 テキスト(text)モードと同様にispell-complete-wordを起動します。


24.4.3 メイルの引用

メイル(mail)モードには、 返信対象であるメッセージの全部や一部をヤンク、つまり、引用(cite) するためのコマンドもあります。 こうしたコマンドはrmailコマンドを 使ってメッセージを送信する場合にだけ使えます。

C-c C-y

rmailで選択したメッセージをヤンクする(mail-yank-original)。

C-c C-r

rmailバッファで選択したリージョンをヤンクする(mail-yank-region)。

C-c C-q

別のメッセージからの引用を段落に詰め込む (mail-fill-yanked-message)。

rmailコマンドを使ってrmailメイルリーダからメイル送信を起動したときには、 C-c C-yを使って返信対象のメッセージをメイルバッファに挿入できます。 このコマンドは、引用メッセージの各行を空白3文字で字下げして ほとんどのヘッダフィールドを削除します。 数引数は字下げする文字数を指定します。 C-uだけを指定すると、字下げをせずにヘッダフィールドも削除しません。 C-c C-yは、つねにrmailバッファのカレントメッセージを使います。 したがって、rmailで1つメッセージを選択してから `*mail*'バッファに切り替えてヤンクし、 また、rmailに切り替えて別のメッセージを選択してというようにすれば、 複数の古いメッセージを挿入できます。

C-c C-yが各行の先頭に挿入する文字列は指定できます。 変数mail-yank-prefixに望みの文字列を設定します。 (値がnilだと字下げしない。デフォルトはこれ。) しかし、C-u C-c C-yと打った場合、 変数mail-yank-prefixの値に関係なく、 各行の行頭には何も挿入しません。

届いたメイルの一部だけをヤンクするには、 rmailで目的の部分にリージョンを設定します。 そして`*mail*'バッファに移ってC-c C-rmail-yank-region)と打ちます。 コピーされる各行は、mail-yank-prefixに従って 字下げされるか行頭に文字列が挿入されます。

C-c C-yC-c C-rを使い終ったら、 C-c C-qmail-fill-yanked-message)と打てば ヤンクした古いメッセージを段落に詰め込めます (38)。 引用したメッセージを1つの段落に詰め込むには、M-qを使います。 詰め込み処理で行頭の文字を自動的に正しく扱えない場合には、 詰め込み接頭辞を陽に指定して試してください。 See section テキストの詰め込み


24.4.4 その他のメイルモードコマンド

C-c C-t

メッセージの本文の先頭に移動する(mail-text)。

C-c C-w

ファイル`~/.signature'をメッセージの本文の末尾に挿入する (mail-signature)。

C-c C-i file RET

fileの内容を送信メッセージの末尾に挿入する (mail-attach-file)。

M-x ispell-message

メッセージの本文について綴りの訂正を行う。 ただし、他のメッセージからの引用部分については行わない。

C-c C-tmail-text)は、 ポイントをヘッダの区切り行のあと、つまり、メッセージ文の先頭に移動します。

C-c C-wmail-signature)は、 あなたを識別するための決まり文句(サイン)をメッセージの末尾に追加します。 このテキストは、ホームディレクトリのファイル`~/.signature'から取ります。 このサインを自動的に挿入するようにするには、 変数mail-signaturetを設定します。 そうすると、メイルメッセージに自動的に ファイル`~/.signature'の内容が付加されます。 特定のメッセージにサインを付けたくなければ、 送信前にバッファ内で削除してください。

変数mail-signatureに文字列を指定することもできます。 すると、送信メッセージを編集し始めると、 その文字列はサインとして自動的に挿入されます。 この変数にそれ以外のLisp式を指定すると、 毎回その式が評価されその値(文字列であること)がサインになります。

コマンドM-x ispell-messageで、 書きあげたメッセージの綴りを訂正できます。 このコマンドは、引用部分については調べませんが、 あなた自身が打ち込んだテキストは検査します。 (字下げやmail-yank-prefixを利用して、 引用部分とあなたの入力部分を区別します。) See section 綴りの検査と訂正

送信メッセージにファイルを付加するには、 カレントバッファにファイルを挿入する普通のコマンドC-x iを使います。 しかし、専用コマンドC-c C-imail-attach-file) を使うほうがより便利なことがしばしばあります。 このコマンドは、指定したファイルの内容をバッファの最後、 サインがあればそのうしろに、ファイル名を含んだ区切り行を付けて挿入します。

C-x mが自動的に行うように)メイル(mail)モードをオンにすると、 ノーマルフック、text-mode-hookmail-mode-hookとが 実行されます。 新たな送信メッセージを初期化するときには、 ノーマルフックmail-setup-hookを実行します。 メイルヘッダに特別なフィールドを追加したり メイルバッファの外見を変えたいならば、これらのフックを使ってください。 See section フック

これらのフックの主な違いは、どの時点で起動されるかです。 M-x mailと打鍵すると、`*mail*'バッファを作成後ただちに mail-mode-hookが実行されます。 続いてmail-setup関数がバッファにデフォルトの内容を入れます。 そのあとで、mail-setup-hookが実行されます。


24.5 NSAを悩ますには

M-x spookは、ランダムに選んだキーワードから成る行を 送信メッセージに付け加えます。 破壊活動を画策していると思わせるような単語の一覧表からキーワードを選びます。

この機能の思想的背景には、NSA (39) は自分たちが関心を持つ特定のキーワードを 含んだすべての電子メイルを盗聴(盗読?)しているのではないかという 疑いがあります。 (NSAは否定していますが、彼らなら当然そういい張るだろう。) 多くの人々が怪しい単語をメッセージに付加しておけば、 NSAはこうした疑わしいメイルの盗聴で非常に忙しくなり、 おしまいにはこうした行為を止めるのではないかと考えたからです。

以下は、送信メッセージを編集し始めると 自動的に怪しいキーワードを付け加える方法です。

 
(add-hook 'mail-setup-hook 'spook)

これでNSAが混乱してもしなくても、 少なくとも人々を楽しませることができます。


24.6 メイル作成方式

本章では、メイルを編集/送信するためのEmacsの通常のモード、 メイル(mail)モードについて説明してきました。 本書ではふれていませんが、 MH-Eやメッセージ(message)モードを含む 別のメイル編集/送信機能もEmacsにはあります。 コマンド、C-x mC-x 4 mC-x 5 mは、 指定されたどの方式にも対応しています。 ですから、メイルを送信するEmacsのさまざまなコマンドや機能を利用できます。

メイル作成方式を指定するには、変数mail-user-agentを設定します。 現時点で正しい設定として認められるものは、 sendmail-user-agentmh-e-user-agentmessage-user-agentです。

異なるメイル作成方式を選択すると、本章で述べた`*mail*'バッファや メイル(mail)モードについての説明は役に立ちません。 異なったメイル作成方式では、 異なった名前のバッファで異なった形式の まったく異なったコマンドを使うかもしれないからです。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.