メール(オブジェクト)を扱うメソッドの詳細については Mail::Message クラス を見て下さい。 この Mail::Message クラス が基本的な操作法を提供しています。 Mail::Bounce や Mail::Delivery をはじめ、 あらゆる関数が、 この 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,
});
これは
「メールを解析し、それをふたたび配送する」というだけのサンプルコードです。
[1]| [1] | UNIX でいえば cat(1) ですね K&Rの最初の方に出てくる、 左から入力したものが右から出てくる単純なコード例: int c;
while ((c = getchar()) != EOF) { putchar(c);}
のメール版と言えるでしょう。 |
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >