fml5 のメール配送システム
fml4 と fml5 の相違点
fml5 の最大の目的の一つは、メンバーリストの取得と操作の統合と抽象化です。
配送には抽象化された Mail::Delivery クラスを次のように使います。
Mail::Delivery::* に属するクラスは SMTP および LMTP 配送へのインターフェ
イスを提供します。
つまり
Mail::Delivery は
Mail::Delivery 以下の派生クラス
SMTP
ESMTP
LMTP
へのインターフェイスを提供するアダプター層です。
例えば次のように使います。
use Mail::Delivery::SMTP;
my $service = new Mail::Delivery::SMTP;
if ($service->error) { Log($service->error); return;}
$service->deliver(
{
mta => '127.0.0.1:25',
smtp_sender => 'rudo@nuinui.net',
recipient_maps => $recipient_maps,
recipient_limit => 1000,
mesage => $message
});
ここで $message は
Mail::Message
オブジェクトです。
Mail::Message
オブジェクト
このオブジェクトはメールを解析し、
header -> body
header -> preamble -> part1 -> part2 -> trailor (multipart)
のようにオブジェクトが数珠つなぎのようなデータ構造を作ります。
Mail::Message
クラスは
このようなデータ構造に対して、さまざまなオペレーションを提供します。