[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

メッセージ(メール)の操作

Table of Contents
Mail::Message クラス
Mail::Message::Parse クラス
Mail::Message::Compose クラス
メッセージの多国語化問題: reply_message_nl() の使い方
[再録] 議論: エラーメッセージを返す

メール(オブジェクト)を扱うメソッドの詳細については 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,
    });
これは 「メールを解析し、それをふたたび配送する」というだけのサンプルコードです。 [1]

Notes

[1]

UNIX でいえば cat(1) ですね K&Rの最初の方に出てくる、 左から入力したものが右から出てくる単純なコード例:

int c;
while ((c = getchar()) != EOF) { putchar(c);}
のメール版と言えるでしょう。

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >