# mime_pls Ver.2.02について

## 1997年12月30日

[Top] Document [History]

- mime_plsとは
- WWW上のmime_plsのページについて
- バージョン番号の調べ方
- 再配布について
- 無保証
- 配布ファイルについて
  - ドキュメントファイル
    - mime_pls.doc
    - history
    - HTML形式ドキュメントファイル
  - mimer.pl
    - &mimedecode
    - &bodydecode
    - &bdeflush
  - mimew.pl
    - &mimeencode
    - &bodyencode
    - &benflush
  - ライブラリを使用したスクリプト
    - rmime
    - wmime
    - rbody
    - wbody
  - Makefile

## mime_plsとは

mime_plsは、MIME encode/decodeのためのperl libraryです。メッセージ ヘッダフィールド中の日本語文字列のMIME encode/decode(RFC2047参照) と、メッセージボディのBase64形式およびQuoted-Printable形式の encode/decode(RFC2045参照)の機能をPerlの関数として提供します。

メッセージヘッダフィールド中の日本語文字列のMIME化はISO-2022-JPの B-encodingのみをサポートします。EUCまたはShiftJISの日本語文字列は ISO-2022-JPに自動変換され、B-encodingによりMIME encoded-wordに変換 されます。また、MIME encoded-wordをデコードする際に出力漢字コード を指定すると、ISO-2022-JPコードをEUCコードやShiftJISコードに変換 して出力することができます。

DOSマシン等の小メモリマシンで使用できるように、mimer.plとmimew.pl の2つのライブラリファイルに分割しました。総称名としてはmime_pls (まいむ・ぷるす)と名付けます。

このドキュメント以外に各ファイルの先頭にもドキュメントを付けたので 参照してください。

## WWW上のmime_plsのページについて

mime_plsのページ <http://www.cc.rim.or.jp/~ikuta/mime_pls/> を公開しました。 このページでは、mime_plsについての情報提供とmime_plsの配布を 行ないます。

## バージョン番号の調べ方

Ver.2.02からは、mime_plsライブラリを使用するスクリプトがmimer.plと mimew.plのバージョンをそれぞれ調べることができるように$mimer_version と$mimew_versionの2つの変数を定義しています。

これらの変数は、値として浮動小数点数を持ちバージョンが上がるにした がって単純増加することが、今後のバージョンにおいても保証されます。

## 再配布について

このライブラリを利用したアプリケーションを書かれた場合には、この ライブラリそのものを添付していただいて構いません。ただし、必ず本 ドキュメントを含む配布ファイルを全て添付してください。

改変して再配布する場合はライブラリファイル中の「配布条件」に従って ください。

## 無保証

このプログラムを使用することにより生じた損害については、作者は いかなる理由においても責任を負いません。使用される方の責任に おいてお使いください。

## 配布ファイルについて

### ドキュメントファイル

  mime_pls.doc
    このファイル(のプレインテキスト版)です。

  history (HTML版を見る)
    これまでの変更履歴を記述したドキュメントです。

  HTML形式ドキュメントファイル
    WWW上のページで公開しているHTML 文書です。

### mimer.pl (ライブラリファイルを見る)

  requireすることにより、&mimedecode,&bodydecode, &bdeflushの3つの関数が使用できます。Ver.2.02から、 $mimer_versionを参照することによりバージョン番号を調べること ができるようになりました。

  &mimedecode($string,$kout)
    $string中のencoded-wordのうち、charset=ISO-2022-JP,encoding=B のものを選択的にデコードし、$koutの指定にしたがって漢字コード 変換を行なった結果を返します。

    $koutは"SJIS"または"EUC"が有効です。 $koutを省略した場合、または有効な指定がされなかった場合は ISO-2022-JP(いわゆる7bit JIS)を返します。

    RFC2047に基づき、encoded-wordにはさまれたLWS(空白、タブ文字、 改行＋タブまたは空白)は削除します。デコードのあと、ISO-2022-JP (RFC1468)で定義されたエスケープシーケンスのうち不要なものが あれば削除します。

  &bodydecode($encoded,$coding)
    $coding が"b64"に等しいか指定しない場合は、$encoded に入れられた文字列をMIME Base64形式のデータとみなしてデコード し、その結果を返します。 Base64 alphabet(A-Za-z0-9+/=)以外の文字が存在しても単に無視 して処理します。

    Base64のデコードは4バイト単位に行われるので、半端な部分(最後 の1〜3バイト)はバッファに保存され、次にこの関数が呼び出された 時にいっしょにデコードされます。 バッファをクリアするには &bdeflush関数を使用します。

    $codingが"qp"に等しい場合は、$encodedに入れられた 文字列をMIME quoted-printable形式のデータとみなしてデコード し、その結果を返します。

  &bdeflush($coding)
    $codingに"b64"または"qp"を指定すること により、エンコード形式としてBase64またはQuoted-Printableを 選択することができます。 $codingを指定しなかった場合はBase64を選択したとみなされます。

    &bodydecode関数によりバッファに保存されたデータを(Base64 の場合は最後に適当なpad文字'='を仮定して)デコードしその結果 を返します。

    この関数が呼ばれると&bodydecodeのバッファがクリアされます。

### mimew.pl (ライブラリファイルを見る)

  requireすることにより、&mimeencode,&bodyencode, &benflushの３つの関数が使用できます。 Ver.2.02から、$mimew_versionを参照することによりバージョン 番号を調べることができるようになりました。

  &mimeencode($string)
    $string中の日本語コードの部分をISO-2022-JP(いわゆる7bit JIS) に変換したあとMIME encoded-word(RFC2047参照)に変換し、 その結果を返します。

    ShiftJISコードとEUCコードが同じ行にある場合を除き、文字 コードは自動的に判別します。エンコードされるISO-2022-JP のエスケープシーケンスはライブラリファイル(mimew.pl)の 最初の方で設定できます。

    $string中のShiftJISまたはEUCの文字列を正常にISO-2022-JP に変換しエンコードするためには、英語版のPerlを使用する 必要があります。

    encoded-wordがASCII文字や特殊文字と直接接することを避け るために、必要に応じて空白を挿入します。encoded-word が コメントの内側にある場合は例外扱いとして括弧との間に空白 を挿入しません。

    長い日本語文字列は必要に応じて分割してエンコードし、また 必要に応じてencoded-wordの前後で折り返し(行分割)処理を します。

  &bodyencode($data,$coding)
    $codingが"b64"に等しいか指定しない場合は、$data 中のデータをBase64エンコードしその結果を返します。

    Base64エンコードの場合は出力1行(デフォルトでは72バイト)に 相当する単位(デフォルトでは54バイト)毎、Quoted-Printable エンコードの場合は元データの論理行(改行コードによる行)毎に 処理します。 $dataのうち半端な部分はバッファ中に保存され、次の呼び出し 時にいっしょにエンコードされます。バッファをクリアするには &benflush関数を使用します。

  &benflush($coding)
    $codingに"b64"または"qp"を指定すること により、エンコード形式としてBase64またはQuoted-Printable を選択することができます。$codingを指定しない場合はBase64 を選択したとみなされます。

    &bodyencode関数によりバッファに保存したデータを選択した 形式でエンコードしその結果を返します。Base64の場合は、エン コード結果が4の倍数長にならなければ必要に応じてpad文字'='を 追加します。

    この関数が呼ばれると&bodyencodeのバッファがクリアされます。

### ライブラリを使用したスクリプト

  rmime (スクリプトを見る)
    mimer.plを使用してMIME headerを デコードするフィルターです。

    使い方：`[[j]perl] rmime [-s|-e|-j] [ファイル ...]`

  wmime (スクリプトを見る)
    mimew.plを使用してヘッダフィールド 中の日本語文字列をエンコードするフィルターです。

    使い方：`[[j]perl [-Llatin]] wmime [ファイル ...]`

  rbody (スクリプトを見る)
    mimer.plを使用してMIME Base64/Quoted-Printable形式のデータをデコードするフィルター です。DOSマシンのような小メモリの環境でも動作するように メモリ使用を抑えて作ってあります。

    使い方：`[[j]perl] {-q|-b} rbody [ファイル ...]`

  wbody (スクリプトを見る)
    mimew.plを使用してデータをMIME Base64/Quoted-Printable形式でエンコードするフィルターです。 DOSマシンのように使用できるメモリが少ない環境でも動作する ようにメモリ使用を抑えて作ってあります。

    使い方：`[[j]perl] {-q|-b} wbody [ファイル ...]`

### Makefile

  mimer.pl,mimew.pl,rmime,wmime,rbody,wbodyをインストールする 際に使用します。他には、ratやtar+gzip(or compress)+uuencode で配布用のアーカイブを作成する機能があります。

  作者の環境(SunOS4.1.3)で使うためのMakefileなので、他の環境 (特にUNIX系以外の環境)ではうまく動かないかもしれません。

[Top] Document [History]