MIMEによるファイルの添付方法(cmail)

MIMEについての解説はMIMEとは(初心者向け)を参照

前準備

cmailMIME形式のファイル添付を行うためには mmencodeが必要です. 次のコマンドを実行してmmencodeが利用できるかどうか確認してください (csh系のシェルを利用している人はtypeの部分をwhichとしてください).

$ type mmencode
mmencode is /usr/local/metamail/mmencode

上のようにmmencodeのパスが出力された場合,mmencodeが利用可能になっています.

MIME形式でファイルを添付する方法

ファイルを添付したい位置でC-c C-x [TAB]とタイプして (あるいはメニューバーのMIME-EditからInsert Fileを選択して) mime-editor/insert-fileを呼び出します. mime-editor/insert-fileを呼び出すと, まず,ファイル名を入力するように促されますので,添付したいファイルのファイル名を入力してください (例えば~/foo.tar.gzとか). 次に,What transfar encodingとエンコード方法をきいてきますので, これには必ずbase64と答えてください. 添付しようとするファイルがバイナリファイルの場合,デフォルトでbase64が選ばれてミニバッファに表示されているはずです. 添付しようとするファイルがテキストファイルの場合,エンコード方法のデフォルト値はありませんが, 自分でbase64とタイプしてbase64を指定してください. cmailではbase64のほかにも,7bit,8bit,binary,quoted-printable,x-gzip64,x-uue といったエンコード方法が指定できるようになっていますが,base64以外のエンコード方法を使うべきではありません

MIME形式で添付されたファイルの抽出

メールにMIME形式でファイルが添付されていた場合,cmailでは次のように表示されます.

Date: Mon, 21 Sep 1998 07:51:52 +0900 (JST)
From: Takashi HATAI <mail-address>
X-Mailer: cmail 2.59.11 on GNU Emacs 20.2.2 / Mule 3.0 (MOMIJINOGA)
To: mail-address
Subject: test mime
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: multipart/mixed;
 boundary="Multipart_Mon_Sep_21_07:51:52_1998-1"
Content-Transfer-Encoding: 7bit

[1. <text/plain; ISO-2022-JP (7bit)>]
(ここは添付ファイルの説明が書いてある普通のテキスト部分です)

[2. foo.tar.gz <application/octet-stream>]

添付されているファイル(ここでは foo.tar.gz)を抽出したい場合には, カーソルを[2. foo.tar.gz<application/octet-stream>]の部分にあわせてeをタイプします. Process tm-file finishedと表示されたら抽出成功です.

ファイルは/tmpに抽出されます. この例では抽出されたファイルは/tmp/foo.tar.gzとして保存されていますので, すみやかに適当なディレクトリに移してください. /tmpはシステムやアプリケーションが作業用のテンポラリファイルをおくためのディレクトリですから, ここにあるファイルはしばらくするとOSが自動的に削除してしまいます(とはいっても1週間くらいは残っていると思いますが).

付録:cmailでのキーバインド

MIMEマルチパートメッセージから添付ファイルを抽出する場合,nを押す (コントロールキーは押さずにnだけを押す)と次のパートに, pを押すと前のパートにカーソルがジャンプすることを覚えておくと便利です. 先の例の場合,第1パートは説明文の部分で,第2パートは添付ファイルfoo.tar.gzです. いま,カーソルがメッセージの冒頭部分にあるとすると, ここでnをタイプすると第1パートに,さらにnを押すと第2パートにカーソルが移動します.

通常のバッファを操作する場合にはnとタイプすると, 当然カーソル位置にnという文字が挿入されるわけですが, cmailでメールを読む場合,(自分がメールを書く場合を除いて)バッファは読み取り専用のはずで, キーを押してもバッファが改変されないようになっているのが親切でしょう (他人が送信してきたメールを改竄してローカルディスクに保管してもあまりうれしくないですから). cmailでメールを読んでいるときにnを押すとカーソルが次のパートにジャンプするようになっているのは, 間違って受信メールを改竄してしまうのを防ぐ意味と,バッファ操作をより便利にする意味の2つがあるといえます.

もちろん,cmailモードでも通常のバッファを操作するときのようにカーソルキーやC-nC-pなどでカーソルを移動させても全く問題ありませんが, メジャーモード特有のキーバインドを利用した場合の方が圧倒的に高速に操作が可能です. しかし,emacsのキーバインドはデフォルトのものだけでも相当な数があるわけで, そのうえメジャーモードのキーバインドも覚えるなんてとうてい無理と思う人もいるでしょう. そういう人は,まず,キーバインドの一覧を表示させる方法を覚えてみてはどうでしょうか.

現在操作中のバッファで使用できるキーバインドの一覧を見るには M-x help-for-help bまたは[f1] bとしてdescribe-bindingsを呼び出します. describe-bindingsで表示されるキーバインド一覧は, 冒頭部分のMajor Mode Bindingsというセクションを参照することでそのモード特有の設定がわかるようになっています (どんどん下の方を見て行くとGlobal Bindingsというセクションがありますが, ここはデフォルトのキーバインドがそのまま適用されている部分ですから, とりあえずあまり参照する必要はありません). このキーバインド一覧は目的の機能を呼び出すためのキーがどれだったか忘れてしまったときなどに役立ちます. 例えばMIME形式でファイルを添付したいときなどには C-x o(other-window)で*Help*バッファに移動しておいて, C-s(iserch-forward)でMIMEをキーワードに検索するというようにして 目的の機能とそのキーバインドを探すことができます.

Major Mode Bindings:
key             binding
---             -------

TAB             cmail-complete-address-or-tab
menu-bar        Prefix Command
C-c             Prefix Command
ESC             Prefix Command
(中略)
C-c C-x TAB     mime-editor/insert-file
(略)

はたいたかし
1998/09/24 初稿
トップページにもどる