メッセージ(メール)の操作
メール(オブジェクト)を扱うメソッドの詳細については
Mail::Message クラス
を見て下さい。
この
Mail::Message クラス
が基本的な操作法を提供しています。
Mail::Bounce や Mail::Delivery をはじめ、
あらゆる関数が、
この
Mail::Message クラス
に依存しています。
Mail::Message クラス
メールはヘッダに始まりボディ(メール本文)が続きます。
MIME/Multipart のように、
ボディは複数の部分(パート)から成ることもありますが、
いずれにせよ数珠つなぎ構造です。
(いわゆるテキストの場合)
header -> body
(マルチパートメールの場合)
header -> preamble -> part1 -> part2 -> trailor
メールの配送処理だけを考えるなら、
メール本文の細部の構造を気にする必要はありません。
一方、
メーリングリストドライバには、
フィルタリングをはじめとして、
メール本文の解析を必要としている処理が多々あります。
それらの処理をするモジュールのために
Mail::Message クラス
があり、
メールの内部構造を表現するために用いられています。
この
Mail::Message クラス
は
Mail::Bounce や Mail::Delivery を始め、
多くのモジュールで使われています。
たとえば、
Mail::Message クラス
を使い、このようなコードを書く想定です。
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,
});
これは
「メールを解析し、それをふたたび配送する」というだけのサンプルコードです。
UNIX でいえば cat(1) ですね
K&Rの最初の方に出てくる、
左から入力したものが右から出てくる単純なコード例:
int c;
while ((c = getchar()) != EOF) { putchar(c);}
のメール版と言えるでしょう。
Mail::Message::Parse クラス
ダミーの派生クラスです。
これは Mail::Message::Compose と同様の階層を便宜上作っています。
あまり深い意味はありません。
パーサの実体は
Mail::Message
クラスの中にあります。
Mail::Message::Compose クラス
これはメール、
特にコマンドメールの処理を返す場合の返答などを構築する際に用いるクラスですが、
単なるアダプタです。
メールを作成する実体は
CPAN の MIME::Lite
クラスです。
作成のリクエストは
MIME::Lite
クラスへ丸投げされています。
使い方やメソッドについての詳細は MIME::Lite クラスを参照して下さい。
§.message.nl;
§.message.discuss;