<!-- -*- mode:text coding:euc-jp -*-
   $FML: chapter.sgml,v 1.8 2008/08/19 03:16:56 fukachan Exp $
-->


<chapter id="mail.manipulation">
	<title>
	メッセージ(メール)の操作
	</title>

<para>
メール(オブジェクト)を扱うメソッドの詳細については
<link linkend="module.mail.message">
Mail::Message クラス
</link>
を見て下さい。
この
<link linkend="module.mail.message">
Mail::Message クラス
</link>
が基本的な操作法を提供しています。
Mail::Bounce や Mail::Delivery をはじめ、
あらゆる関数が、
この
<link linkend="module.mail.message">
Mail::Message クラス
</link>
に依存しています。
</para>


<!-- ======================================= -->
<sect1>
	<title>
	Mail::Message クラス
	</title>

<para>
メールはヘッダに始まりボディ(メール本文)が続きます。
MIME/Multipart のように、
ボディは複数の部分(パート)から成ることもありますが、
いずれにせよ数珠つなぎ構造です。
<screen>
(いわゆるテキストの場合)
header -> body

(マルチパートメールの場合)
header -> preamble -> part1 -> part2 -> trailor
</screen>
</para>

<para>
メールの配送処理だけを考えるなら、
メール本文の細部の構造を気にする必要はありません。
一方、
メーリングリストドライバには、
フィルタリングをはじめとして、
メール本文の解析を必要としている処理が多々あります。
</para>

<para>
それらの処理をするモジュールのために
<link linkend="module.mail.message">
Mail::Message クラス
</link>
があり、
メールの内部構造を表現するために用いられています。
この
<link linkend="module.mail.message">
Mail::Message クラス
</link>
は
Mail::Bounce や Mail::Delivery を始め、
多くのモジュールで使われています。
</para>

<para>
たとえば、
<link linkend="module.mail.message">
Mail::Message クラス
</link>
を使い、このようなコードを書く想定です。
<screen>
    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,
    });
</screen>
これは
「メールを解析し、それをふたたび配送する」というだけのサンプルコードです。
<footnote>
<para>
UNIX でいえば cat(1) ですね
K&amp;Rの最初の方に出てくる、
左から入力したものが右から出てくる単純なコード例:
<screen>
int c;
while ((c = getchar()) != EOF) { putchar(c);}
</screen>
のメール版と言えるでしょう。
<para>
</footnote>
</para>

</sect1>


<!-- ======================================= -->
<sect1>
	<title>
	Mail::Message::Parse クラス
	</title>

<para>
ダミーの派生クラスです。
これは Mail::Message::Compose と同様の階層を便宜上作っています。
あまり深い意味はありません。
</para>

<para>
パーサの実体は
	<link linkend="module.mail.message">
	Mail::Message
	</link>
クラスの中にあります。
</para>

</sect1>


<!-- ======================================= -->
<sect1>
	<title>
	Mail::Message::Compose クラス
	</title>

<para>
これはメール、
特にコマンドメールの処理を返す場合の返答などを構築する際に用いるクラスですが、
単なるアダプタです。
メールを作成する実体は
CPAN の MIME::Lite
クラスです。
作成のリクエストは
MIME::Lite
クラスへ丸投げされています。
</para>

<para>
使い方やメソッドについての詳細は MIME::Lite クラスを参照して下さい。
</para>

</sect1>


<!-- 他国語化について -->
&sect.message.nl;
&sect.message.discuss;

</chapter>
