メール(オブジェクト)を扱うメソッドの詳細については 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 >