[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1. デコードと表示

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Decoding+and+Viewing"
"emacs-mime-ja/デコードと表示"へのコメント(無し)

この章は、上位階層での MIME メッセージのデコードと表示を扱いま す。

その主な目的は、最初に MIME の記事を解析してから、その解析の結 果として返される「ハンドル」のリストに基づいて、他のプログラムが処理を行 なうことができるようにすることです。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.1 解体

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Dissection"
"emacs-mime-ja/解体"へのコメント(無し)

mm-dissect-bufferMIME 記事の解体を担当する関数です。 マルチパートのメッセージが与えられると、メッセージを再帰的に掘り下げて構 造をたどり、そのメッセージの構造を描写する MIME ハンドルの木構 造を返します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.2 非-MIME

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Non%2DMIME"
"emacs-mime-ja/非-MIME"へのコメント(無し)

Gnus はいくつかの MIME ではない添付ファイルも理解します。それ らは postscript, uuencode, binhex, yenc, shar, forward, gnatsweb, pgp, diff のようなものです。それぞれの機能は、mm-uu-configure-list に 項目を追加することによって無効にすることができます。例です。

 
(require 'mm-uu)
(add-to-list 'mm-uu-configure-list '(pgp-signed . disabled))

postscript
ポストスクリプトのファイル。

uu
Uuencode されたファイル。

binhex
Binhex でエンコードされたファイル。

yenc
Yenc でエンコードされたファイル。

shar
Shar で作られたアーカイブ・ファイル。

forward
MIME を使わずに転送されたメッセージ。

gnatsweb
Gnatsweb の添付ファイル。

pgp-signed
PGP で署名された平文 (clear text, ひらぶん)。

pgp-encrypted
PGP で暗号化された平文 (clear text, ひらぶん)。

pgp-key
PGP の公開鍵。

emacs-sources
Emacs のソースコード。この項目は mm-uu-emacs-sources-regexp に合 致するグループでのみ動作します。

diff
パッチ。これは、コミットされたファイルの差分が自動的に送られるグループを 対象にしたものです。mm-uu-diff-groups-regexp に合致するグループで のみ動作します。

verbatim-marks
Slrn ふうの verbatim (文章を一言一句そのまま表す) 記号の対。

(訳注: `#v+' と `#v-' の二行で囲まれたテキスト を MIME パートに見立てます。)

LaTeX
LaTeX の文献。mm-uu-tex-groups-regexp に合致する名前のグループで のみ動作します。

いくつかの MIME ではない添付は mm-uu-extract というフェー スを使って表示されます。ディフォルトではそれらのパート に MIME ボタンが付きません。K b (gnus-summary-display-buttonized) を使う か gnus-buttonized-mime-typestext/x-verbatim を加える ことによって、ボタンの表示を強制することができます。See 節 `MIME コマンド' in

The Gnus Manual
.

(訳注: ここで唐突に text/x-verbatim のことが出てくるのは、フェー スが使われてボタンが付かない代表的なパートが verbatim-marks だか らです。)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.3 ハンドル

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Handles"
"emacs-mime-ja/ハンドル"へのコメント(無し)

MIME ハンドルは、MIME の構成要素を完全に描写するリス トです。

ハンドルの要素をアクセスするために、以下のマクロを使うことができます:

mm-handle-buffer
デコードされていない MIME パートの内容物を保持しているバッファー を返します。

mm-handle-type
パートの解析された Content-Type を返します。

mm-handle-encoding
パートの Content-Transfer-Encoding を返します。

mm-handle-undisplayer
表示されているパートを消すことができるもの (訳注: 関数など) を (それが表 示されている場合に) 返します。

mm-handle-set-undisplayer
表示されているパートを消すことができるもの (訳注: 関数など) を設定します。

mm-handle-disposition
パートの解析された Content-Disposition (訳注: 配置指定) を返しま す。

mm-get-content-id
Content-ID で参照されるハンドル (単数または複数) を返します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.4 表示

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Display"
"emacs-mime-ja/表示"へのコメント(無し)

表示し、消去し、保存するための関数です。

mm-display-part
パートを表示します。

mm-remove-part
パートを (それが表示されていたら) 消去します。

mm-inlinable-p
MIME タイプがインラインで表示可能かどうかを返します。

mm-automatic-display-p
MIME タイプが自動的に表示されるべきかどうかを返します。

mm-destroy-part
パートによって使われているすべての資源を開放します (訳注: パートの表示、 およびパートを解体して得た個々の部品を一時的に保持しているバッファーやファ イルを消去します)。

mm-save-part
パートをファイルに保存します。

mm-pipe-part
パートを何かのプロセスにパイプします。

mm-interactively-view-part
パートを表示するために使う mailcap の手段を利用者が入力することを求めて、 それを使って表示します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.5 表示のカスタマイズ

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Display+Customization"
"emacs-mime-ja/表示のカスタマイズ"へのコメント(無し)

mm-inline-media-tests
これは連想リストです。鍵 (第一要素) は MIME タイプ、第二要素は パートを「インライン」で (すなわち Emacs の画面に埋め込んで) 表示するた めの関数、そして第三要素はそのパートがインラインで表示することが可能かど うかを調べるために eval (評価) される式です。

この変数は、あるパートがインライン表示可能かどうかと、もし可能ならそのや り方を指定します。パートが現実にインライン表示されているかどうかを示すも のではありません。

mm-inlined-types
一方これは、上記の変数によって設定された条件を満足した場合に、インライン 表示を行なうタイプを示します。これは MIME メディアタイプのリス トです。(訳注: それぞれの要素は正規表現です。)

mm-automatic-display
これは上記の変数が認めるタイプに限って「自動的」に表示されるタイプのリス トです。つまり、インライン表示が可能なパートだけが自動的に表示されます。

mm-automatic-external-display
これは外部ビューワーで自動的に表示されるタイプのリストです。

mm-keep-viewer-alive-types
これは、別の記事を選択しても外部ビューワーが kill されないメディアタイプ のリストです。

訳注: postscript や dvi など (変数のディフォルト値を参照のこと) のように、 読むのに時間がかかるかもしれないパートのタイプを含むリストです。一方、こ れに含まれない単純な画像のパートなどは、それが含まれていた記事の表示をや めたときに、自動的に外部ビューワーが kill されます。

mm-attachment-override-types
いくつかの MIME エージェントは「添付ファイル」(attachment) の 配置指定 (content-disposition) を持つパートを生成します。この変数に含ま れる MIME タイプの場合はそんな配置指定を無視して、そのパートを インライン表示することができるようにします。(そのパートをインライン表示 することが可能で、私たちがそうすることを望む場合に限って、配置指定が無視 されることに注意してください。)

mm-discouraged-alternatives
`multipart/alternative' に含まれている、見たくないパート の MIME タイプのリストです。メッセージの後半にあるパートが最も 豊かな内容になっていると想定しているので、表示エージェントはそれを表示す ることになっています。しかし、利用者は代わりに他のタイプを見ることを好む かもしれません。このリストは、どんなタイプを最も見たくないかを指定するた めに使います。例えばもし `text/html' パートをぜんぜん見たくなくて、 `text/richtext' パートはあまり見たくないということであれば、以下の ように宣言することができます:

 
(setq mm-discouraged-alternatives
      '("text/html" "text/richtext")
      mm-automatic-display
      (remove "text/html" mm-automatic-display))

さらに、これに "image/.*" を追加することは役に立つでしょう。 Spammers は `multipart/alternative' メッセージの優先される側で画像 を使っていることがあるので、あなたはそれ以外のパートがあることに気が付か ないかもしれません。gnus-buttonized-mime-types も参照してくださ い (see 節 `MIME コマンド' in

The Gnus Manual
)。 gnus-buttonized-mime-types"multipart/alternative" を追 加した後では、見たい側を手で選ぶことができます。例えば、このように設定す るれば良いでしょう:

 
(setq gnus-buttonized-mime-types
      '("multipart/alternative" "multipart/signed")
      mm-discouraged-alternatives
      '("text/html" "image/.*"))

この場合、Gnus はそのような種類の spam メッセージのために、以下のように ラジオボタンを表示するでしょう:

 
1.  (*) multipart/alternative  ( ) image/gif

2.  (*) text/plain          ( ) text/html

mm-inline-large-images
ウィンドウより大きなインライン画像を表示すると、Emacs はスクロールするこ とができません。つまり画像の全体を見ることができないということです。これ を避けるために、ライブラリーはそれをインライン表示する前に画像のサイズを 計って、それがウィンドウに合わない場合は、ライブラリーはそれを外部で (例 えば `ImageMagick' や `xv' で) 表示します。この変数 を t に設定すると、この検査をさせなくして、ライブラリーにすべての 画像をサイズに関わりなくインラインで表示させます。もしこの変数 を resize にすると、Emacs に画像のサイズを変更する能力があれば、 画像はウィンドウに合うようにサイズが変更されて表示されます。

mm-inline-large-images-proportion
大きな画像のサイズを変更するときの割合。

mm-inline-override-types
mm-inlined-types は、例えばすべての `text/.*' パートをインラ インで表示することを指示するような正規表現を含んでいるかもしれません。一 方、インライン表示が可能だけれども添付ファイルとして扱いたいタイプがある ならば、そのタイプに合致する正規表現のリストをこの変数に設定することによっ て、それを実現することができます。例え ば mm-inlined-types が `text/.*' を含んでいるものとすると、 この変数に `text/html' を含ませることによって、`text/html' パー トは添付ファイルとして扱われるようになります。

mm-text-html-renderer
HTML を描画するために使う関数を選択します。すでに用意してある 描画プログラムは、gnus-article-html, w3, w3m(1), links, lynx, w3m-standalone または html2text のシンボル群 のうちの一つを指定することによって選択します。もし nil だったら、 外部ビューワーを使います。さらに関数 (引数として MIME ハンドル が与えられて呼ばれる) を設定することもできます。

mm-inline-text-html-with-images
HTML メールには `' タグを使った spammers (spam をば らまくやから) の卑劣な悪巧みが含まれているかもしれません。最もありそうな のは、あなたがそのメールを読んだことを確認するための意図があることです。 このオプションを nil に設定する (それがディフォルトです) ことによっ て、あなたの個人情報が流出するのを防ぐことができます。今のとこ ろ Emacs/W3 はこれを無視します。Emacs-w3m では、これが nil であっ ても、画像が埋め込まれた場所で t 命令を使うことによって画像を表示 することができます。(2)

mm-w3m-safe-url-regexp
安全な URL 名、すなわち HTML メールを描画するときに個人情報が 流出しそうもない URL に合致する正規表現です (ディフォルト値 は `\\`cid:' です)。nil にすると、すべての URL が安全だと判 断します。Gnus では、これは gnus-safe-html-newsgroups の値に応じ て上書きされます。See 節 `いろいろのいろいろ' in
The Gnus Manual
.

mm-inline-text-html-with-w3m-keymap
このオプションを非-nil に設定することによって、インライン表示され た text/html パートで emacs-w3m の命令キーを使うことができます。ディフォ ルト値は t です。

mm-external-terminal-program
外部の端末を起動するために使われるプログラムです。

mm-enable-external
外部の MIME ハンドラーを使うべきかどうかを指定します。

t だったら、定義されているすべての外部の MIME ハンドラー が使われます。nil にすると、ファイルはディスクに保存されま す (mailcap-save-binary-file)。これが ask というシンボルだっ たら、外部の MIME ハンドラーが起動される前に尋ねられるでしょう。

Mailcap (see 節 4.12 mailcap) を介して添付ファイルの表示を始めると、安全な ビューワーを最も安全なオプションで使うことを試みます (添付ファイルをディ スクに保存して、異なる手段 (コマンドラインかダブルクリック) でその表示を 始める場合とは違います)。とにかく、必ずどんな外部プログラムも使わないよ うにしたいのであれば、この変数を nilask に設定してくだ さい。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.6 ファイルとディレクトリー

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=Files+and+Directories"
"emacs-mime-ja/ファイルとディレクトリー"へのコメント(無し)

mm-default-directory
添付ファイルを保存するための、ディフォルトのディレクトリーです。 nil だったら default-directory を使います。

mm-tmp-directory
一時ファイルを格納するためのディレクトリーです。

mm-file-name-rewrite-functions
MIME パートのファイル名を書き換えるために使われる関数のリスト です。それぞれの関数はファイル名に対して順繰りに実行されます (訳注: ある 関数の戻り値が次の関数の引数になります)。出来合いの関数は以下の通りです。

mm-file-name-delete-control
すべての制御文字を消去します。

mm-file-name-delete-gotchas
欠陥があるシェルスクリプトで使われると意図しない結果を生じる文字、すなわ ち `|', `>' および `<'、加えて最初の文字として使われ る `-' と `.' を消去します。

mm-file-name-delete-whitespace
すべての空白文字を取り除きます。

mm-file-name-trim-whitespace
先頭と末尾の空白文字を取り除きます。

mm-file-name-collapse-whitespace
複数の連続した空白文字を単一のスペース文字で置き換えます。

mm-file-name-replace-whitespace
空白文字を下線 (underscore) で置き換えます。下線がお好みでなければ、他の 文字を mm-file-name-replace-whitespace 変数に設定してください。

Emacs 標準の関数である capitalize, downcase, upcase および upcase-initials も役に立つことがあるかもしれ ません。

mm-path-name-rewrite-functions
MIME パートのフル・ファイル名を書き換えるために使われる関数の リストです。これはパートを外部で表示するとき (すなわち、融通の効かないプ ログラムが、ファイルが保存された場所を見つけることができるように、絶対パ ス名を変換するため) に使われます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.7 新しいビューワー

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs-mime-ja&node=New+Viewers"
"emacs-mime-ja/新しいビューワー"へのコメント(無し)

これは text/enriched パートをインライン表示するビューワーの例です:

 
(defun mm-display-enriched-inline (handle)
  (let (text)
    (with-temp-buffer
      (mm-insert-part handle)
      (save-window-excursion
        (enriched-decode (point-min) (point-max))
        (setq text (buffer-string))))
    (mm-insert-inline handle text)))

この関数がパラメーターとして MIME ハンドルを受け取ることがわか りますね。それは一時バッファーに作業場所を移し、パートのテキストを挿入し、 そのテキストに何かの処理を施し、結果を覚えておいて、関数が呼ばれたときの バッファーに戻ってその結果を挿入します。

ここにある二つの重要なお助け関数 は mm-insert-partmm-insert-inline です。最初の関数は、 ハンドルのテキストを現在のバッファーに挿入します。これは文字セットおよび エンコーディグ (content transfer decoding) を取り扱います。二番目の関数 は、挿入しろと言ったどんなテキストでも単に挿入しますが、テキストを手軽な 方法で「表示されなくする」(undisplayed にする) ことができるような諸設定 をも行ないます。


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]