2010/09/01

mh で画像を添付したマルチメディアメイルを送信する

最近の mh(1) は標準で画像等を添付した MIMEマルチパート形式のメイルが送信できる。
mh(1) では mhn(1) コマンドを利用して マルチメディアメッセージを操作するので、 マルチメディアメイルを送信するためには、 本文中にマルチメディアメイルである事を通知する行 (ここでは mhn 通知行 と呼ぶ)を記述した上で mhn(1) コマンドを実行し、 添付ファイルを base64 エンコードしてマルチパート形式に変換すればよい。

mhn 通知行は本文の 1 カラム目から以下の形式で記述する。

#MIME タイプ; name="ファイル名" [ファイルの説明] ファイル名
MIME タイプは jpeg 形式の画像であれば image/jpeg、 gif 形式の画像であれば image/gif などと指定する。
comp(1) や repl(1) を利用してメイル本文を編集する場合、 mhn 通知行を含む本文を作成した後で What now? プロンプトから edit mhn などとして mhn(1) コマンドを実行してから 送信すればマルチメディアメイルが送信できる。

最近の日本語パッチが適用された mh(1) は、 mhn(1) コマンドがメイル本文の文字コードを参照して 適切な charset を Content-Type: ヘッダに付加するので、 メイル送信前に必ず mhn(1) を実行しても良いだろう。
その場合は $HOME/.mh_profile に以下の行を記述しておくと 送信時に自動で mhn が実行されて便利。

automhnproc:	mhn

ちなみに 1 カラム目が # な行は mhn 通知行 とみなされるので、 本文中で # が行頭になるメイルを作成する場合は ## とする必要がある。

この様に mh(1) で MIME マルチパート形式のメイルを送信するのは 最近の高機能な MUA に比較すると若干面倒なので、 多少なりとも簡単に送信するために mhmime スクリプトを作成した。
このスクリプトを利用してマルチメディアメイルを作成するためには メイル本文の 1 カラム目から以下の行を記述する。

#MIME ファイル名 ファイルの説明
このスクリプトは記述されたファイル名から MIME タイプを推測して mhn 指示行 を生成し、 #MIME 以外で 1 カラム目が # の場合は ## に置換した上でmhn(1) コマンドを実行する。

メイル本文を作成した後で What now? プロンプトから edit mhmime などとしてこのスクリプトを実行した上で 送信すればマルチメディアメイルが送信できる。
$HOME/.mh_profileautomhnproc: に指定しておけば、 送信時に自動で実行されるので多少は便利になるかもしれない。

しかし、今時 mh を素で利用している人は果たしてどれほどいるのだろうか?


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.