|
NOTICE!
本コードはMew本体の動作を変更し、 本来RFC違反であるものを、利便性のために有効にするものです。 御自分の責任において使用していただくようお願いいたします。 本コードを使用することで発生する障害は Mew本体とは関係ありませんので、 苦情、要望、質問等は こちらにお願いします。 |
mew-fake-cdp.elは、 漢字ファイル名で添付されたファイルを Mew で扱えるようにするためのコードです。 また、ファイル名がContent-Type:ヘッダのname= パラメータでのみ指定された場合の対応や、 Content-Disposition:の値をファイル名として利用することもできます。 ただし、Mewで漢字ファイル名での添付ファイルを送れる ようにするものではありません。
電子メール等において、 一般に「添付ファイル」といわれるMIME attachmentが 広く使われています。 現在この添付ファイルのファイル名を伝える方法は以下のものが使われています。
上記のうち前者(name=)は現在は使われるべきではありませんが、 いくつかのMUAでは依然として前者のみを使用しているもの (例えばcc:MailやLotus Notesなど)や、 Windows上のいくつかのMUAは(互換性を考慮してか) 両者を付加しているものもあります。 MIME的には後者のみであるべきであり、 Mewは後者(filename=)のみを受け付け、 前者(name=)を無視します。
また、filename=で使用する文字コードは厳密にはASCIIである必要があ るにもかかわらず本文でも使用しているコード(ISO-2022-JP)をそのま ま使用したり、Messageヘッダでのエンコード(B-encode, Q-Encode)を パートヘッダでも使用することを自然な拡張(?) として使用すること で、漢字ファイル名のファイルを送るMUAが増え、実際多くのやり取り が行われています。これはつい最近(RFC-2184,RFC-2231)まで漢字ファ イル名をやり取りする具体的な取り決めが提供されなかったための、苦 肉の独自拡張といえます。RFC-2231としてエンコーディングの取り決め られた現在はこれに従う必要があるのですが、実際にはこれが実装され ているMUAは皆無(*1)で、従来の独自拡張(raw-JIS, B-Encode, Q-Encode)で 流通しているのが現状です。
さて、上記のように、Mewではname=で指定されたファイル名を理解しません。 また、filename=で指定されていてもB-enc/Q-enc されたファイル名をデコードしません。 それはそれでMIMEに対する厳密さとして良いことなのですが、 実際に漢字ファイル名で送られてきた場合、 その添付ファイルをセーブしようとすると、 例えば "=?ISO-2022-JP?B?GyRCNEE7ehsoQg==?=.txt" などといったファイル名となってしまい非常に不便です。 本コードはMewのsyntax解析結果をさらに加工し、 あたかもMewが柔軟な対応をしているかのように振る舞わせるためのコードです。
*1) Mew は 1.94 beta 6 より RFC2231のサポートを行なうべくコード の実装を開始しました。現時点(99/02/16)ではまだ試験段階です。
本コードを使用することで、添付ファイル名の扱いは以下の手順で行われます。
これにより、以下の機能を提供します。
補足:
また、Mewは1.94b6から RFC2231のエンコーディングのサポートを実装 し始めましたが、これとの機能的な衝突は今のところありません (mew-1.94b6時点)ので、RFC2231の漢字ファイル名はmewが、それ以外の ものは従来どおりmew-fake-cdpが処理することが出来ます。
本コードではMewの解析関数であるmew-decode-mime-header<f>を 拡張します。そのため、Mewがロードされた後、 mew-fake-cdp-setup<f>を呼び出して組み込みを行います。具体 的には以下のコードを~/.emacsに加えます。
(eval-after-load "mew" '(load "mew-fake-cdp"))
あるいは M-x load-library mew-fake-cdp としても良いでしょ う。ファイルがロードされた時点から機能が使用できますので、あとは いつもどおりMewを使用してください。
それ以外の環境でも動作するものと思われますが、保証するものではあ
りません。御連絡いただけ
ればある程度の対応は可能です。また、今後のバージョンでのMew本体
のコード変更により正常に動作しなくなる可能性があることを御了承く
ださい。質問、要望などがございましたら
こちらまで、お願いします。
また、本コードはMewの一部ではありませんので、くれぐれも
mew-distに苦情等を投げたりしないよう願いいたします。
revision 1.13
date: 1999/02/19 04:42:44; author: gotoh; state: Exp; lines: +78 -70
* Adapt to new syntax also in raw JIS decoding.
* Catch errors in fake code and warn to user.
----------------------------
revision 1.12
date: 1999/02/18 17:53:24; author: gotoh; state: Exp; lines: +38 -6
* New advice of mew-param-analyze (for mew-1.94b6 or later)
* Support quoted multi-lined value (for mew-1.94b6 or later).
* Add activiate/deactivate command:
mew-fake-cdp-activate and mew-fake-cdp-deactivate.
----------------------------
revision 1.11
date: 1999/02/16 09:33:10; author: gotoh; state: Exp; lines: +43 -29
* Support new syntax format in mew-1.94b6.
* Use ADVICE ... see description in file
----------------------------
revision 1.10
date: 1999/02/16 06:37:41; author: gotoh; state: Exp; lines: +3 -1
* Function mew-syntax-get-member is obsoleted in mew-1.94b6.
----------------------------
revision 1.9
date: 1998/11/23 07:34:19; author: gotoh; state: Exp; lines: +8 -5
* Raw-JIS CD: was not put back into syntax. (So displayed as ^[$B... )
----------------------------
revision 1.8
date: 1998/11/23 05:35:01; author: gotoh; state: Exp; lines: +20 -4
* [BUG fix] No decoding twice for Japanese CD: (error: not character boundary)
* add new func: mew-fake-cdp-find-cs-string
----------------------------
revision 1.7
date: 1998/11/10 06:10:16; author: gotoh; state: Exp; lines: +25 -4
* Walk around of mew-header-sanity-check-string for raw-JIS filename.
----------------------------
revision 1.6
date: 1998/06/01 10:02:23; author: gotoh; state: Exp; lines: +9 -7
* Easy mistake; filename is not right if ascii and enc-word co-exist.
----------------------------
revision 1.5
date: 1998/05/28 13:52:01; author: gotoh; state: Exp; lines: +5 -2
BUGFIX: to support mule for win
----------------------------
revision 1.4
date: 1998/05/28 13:42:01; author: gotoh; state: Exp; lines: +16 -19
mew-1.93b36 support
----------------------------
revision 1.3
date: 1998/03/13 10:44:59; author: gotoh; state: Exp; lines: +19 -9
BUG-FIX when CDP: is specified correctly and B-Enc'ed.
Add switch to use CT: name= (default is t)
Add switch to remove spaces in filename (default is nil)
----------------------------
revision 1.2
date: 1998/03/13 09:29:15; author: gotoh; state: Exp; lines: +40 -16
Add CD: support (optional)
----------------------------
revision 1.1
date: 1998/03/13 08:31:19; author: gotoh; state: Exp;
Initial revision