MIME::Entity
MIME::Parserが解析・デコードしたMIMEメッセージを保持する。
MIME形式のメールメッセージの生成にも使える。
使い方:
# MIME::Parserをロードすると、MIME::Entityもロードされる
# メールメッセージ生成に使うなら、use MIME::Entityをロードする
use MIME::Parser;
my $parser = MIME::Parser->new( );
# (解析を実行して)MIME::Entity オブジェクトを得る
my $entity = $parser->parse($data);
my $head =$entity->head;
MIME::Headオブジェクトを返す。
my $body = $entity->bodyhandle;
MIME::Bodyオブジェクトを返す。
multipartメール、または、ネスト構造を持つメールの場合は、undef が返る。この場合、parts メソッドを使用する。
my @lines = $entity->body;
エンコードされたメールメッセージ本体を1行づつリストで出力する。デコードされたメッセージを取得する場合は、$entity->bodyhandleを使用する。
my $entityies = $entity->parts;
multipartメールならば、MIME::Entity オブジェクトの個数を返す。
配列に代入すると、MIME::Entity リストが返る事になっているが、パーツが1個の場合、リストを返してくれないので、個数を調べてインデクスアクセスする方が容易。
my $sub_entity = $entity->part($n);
multipartメールならば、multipart配下の(最初が0番目として)$n番目のMIME::Entity オブジェクトを返す。
my $type = $entity->mime_type;
ヘッダに宣言されたMIMEタイプを返す。
my $multipart = $entity->is_multipart;
multipartメールならば、trueを返す。
$entity = MIME::Entity->build(%params);
メールメッセージと、それを保持するインスタンスを生成する。
下記のパラメータが指定可能。
(FIELDNAME):ヘッダのフィールド名。To, From, Content-*, Subject, Rrply-Toなど
Boundary:multipartを区切るバウンダリ(multipartメールの場合のみ)
Charset:文字セット
Data:メッセージ本体(スカラーデータ)。Pathとは排他使用。
Disposition:content-disposition ("attachment" or "inline")。デフォルトはinline。
Encoding:content-transfer-encoding。ファイルを添付する場合は、BASE64などを指定する。
Path:メッセージ本体(ファイル名を指定してファイルから読み込む)。Dataとは排他使用。
Top:singlepartメール、または、multipartメールのトップパートの場合、1。デフォルトは1。
Type:content-type。デフォルトはtest/plain。
$entity->add_part($part_entity [,$offset]);
multipartメールの下位entityを追加する。$offsetを指定すると、何番目のパートを追加するか指定できる。
multipartメールを作成する場合は、Type=>"multipart/mixed" ,top=>1を指定したentityをbuildし、Type=>0を指定したentityをこのメソッドで追加していく。
$entity->attach(%params);
buildメソッドと同じパラメータが指定可能。下位partのbuildとadd_partを同時に実行する。
$entity->as_string( );
エンコード済みメッセージを文字列で出力する。
$entity->print(\*FILEHANDLE);
エンコード済みメッセージをFILEHANDLEに出力する。