From 4407cf7927f712bbc60e1b908eeceedfcaf44d89 Mon Sep 17 00:00:00 2001 From: fukachan Date: Sat, 24 Nov 2001 03:22:52 +0000 Subject: reorder, enrich part II --- fml/doc/ja/tutorial/message/chapter.sgml | 108 +++++++++++++++++++++++++++++ fml/doc/ja/tutorial/message/reply.sgml | 113 +++++++++++++++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 fml/doc/ja/tutorial/message/chapter.sgml create mode 100644 fml/doc/ja/tutorial/message/reply.sgml (limited to 'fml/doc/ja/tutorial/message') diff --git a/fml/doc/ja/tutorial/message/chapter.sgml b/fml/doc/ja/tutorial/message/chapter.sgml new file mode 100644 index 00000000..86de2a7a --- /dev/null +++ b/fml/doc/ja/tutorial/message/chapter.sgml @@ -0,0 +1,108 @@ + + + + メッセージ(メール)の操作 + + +メール(オブジェクト)を扱う関数の詳細については + +Mail::Message クラス + +を見て下さい。 +このクラスが基本的な操作法を提供しています。 +Mail::Bounce や Mail::Delivery を始め、 +あらゆる関数がこのクラスに依存しています。 + + + + + + Mail::Message クラス + + +メールはヘッダに始まりボディ(メール本文)が続きます。 +multipart のように、 +ボディは複数の部分(パート)から成ることもあります。 + + + +メールの配送処理だけを考えると、 +メール本文の細部の構造を気にする必要はありません。 +一方、フィルタリングを始めとして、メール本文の解析を +必要としている処理は多々あります。 + + + +それらのモジュールのために + +Mail::Message クラス + +があり、 +メールの構造を表現するために用いられています。 +このクラスは +Mail::Bounce や Mail::Delivery を始め、 +いたるところで使われています。 + + + +例えば、このような使い方をします。 + + my $fh = new FileHandle $file; + my $msg = Mail::Message->parse( { fd => $fh } ); + + use FML::Mailer; + my $obj = new FML::Mailer; + $obj->send( { + sender => $sender, + recipient => $rcpt, + message => $msg, + }); + + + + + + + + + Mail::Message::Parse クラス + + +ダミーの派生クラスです。 +これは Mail::Message::Compose と同様の階層を便宜上作っています。 +あまり深い意味はありません。 + + + +パーサの実体は + + Mail::Message + +クラスの中にあります。 + + + + + + + + Mail::Message::Compose クラス + + +これはメールを構築する際に用いるクラスですが、単なるアダプタです。 +メールを作成する実体は +CPAN の MIME::Lite クラスです。 +作成のリクエストは +MIME::Lite クラスへ +丸投げされています。 + + + +使い方やメソッドについての詳細は MIME::Lite クラスを参照して下さい。 + + + + + diff --git a/fml/doc/ja/tutorial/message/reply.sgml b/fml/doc/ja/tutorial/message/reply.sgml new file mode 100644 index 00000000..5bfd8611 --- /dev/null +++ b/fml/doc/ja/tutorial/message/reply.sgml @@ -0,0 +1,113 @@ + + + + + fml からメールで返事を送り返す + + + + 概要 + + +送り返すべきメールは +Mail::Delivery::Queue +を使い queue に入れます。 +queue に入ったメールは、のちに +FML::Process::QueueManager +クラスが(配送)処理をします。 +FML::Process::QueueManager により +queue ファイルが queue ディレクトリから pickup され、 +Mail::Message で parse され、 +FML::Mailer 経由で +Mail::Delivery が実際にメール配送処理をします。 + +Mail::Delivery::Queue + ↓ + ↓→→→ キューディレクトリ + ↓ +FML::Process::QueueManager + ↓ + ↓←←← キューディレクトリ + ↓ +FML::Mailer + ↓ +Mail::Delivery + + + + + + + queue ディレクトリ + + +queue ディレクトリは複数のディレクトリからなります。 + +new/ +active/ +deferred/ +info/sender/ +info/recipients/ + +info/ には envelope 情報が格納されます。 + + + +queue ファイルを作る時は、一旦 new/ に作成されます。 +queue ファイルを作る作業が終了し、配送準備 OK となったら +new/ から active/ に移動されます。 +つまり active/ にあるファイルは配送準備ができているものです。 + + + + queue ディレクトリをロックする + +特定の $queue_id object ごとに lock() と unlock() メソッドを使い、 +ロックをかけます。 +ロックは active/$queue_id ファイルに対しての flock(2) システムコールです。 + + + + + + + + + fml の中でどうするか? + + + +あるメッセージを送り返したい場合は、次のようにします。 + +$curproc->reply_message( "you are not a ML member." ); + +この場合の受信者はコマンドの結果などを受けとる人、 +fml にリクエストをした人です。 + + + + +ファイルを送りたい場合や画像を送りたい場合は次のようにします。 + +$curproc->reply_message( { + type => "text/plain; charset=iso-2022-jp", + path => "/etc/fml/main.cf", + filename => "main.cf", + disposition => "main.cf example", + }); + +$curproc->reply_message( { + type => "image/gif", + path => "/some/where/logo001.gif", + filename => "logo.gif", + disposition => "attachment", + }); + + + + + + + -- cgit v1.2.1