<?xml version='1.0' encoding='utf-8'?>
<pod xmlns="http://axkit.org/ns/2000/pod2xml">
<head>
	<title>名前</title>
</head>
<sect1>
<title>名前</title>
<para>
MIME::Explode - MIMEメッセージを解体するためのPerl拡張
</para>
</sect1>
<sect1>
<title>概要</title>
<verbatim><![CDATA[
use MIME::Explode;
]]></verbatim>
<verbatim><![CDATA[
my $explode = MIME::Explode->new(
  output_dir         => "tmp",
  mkdir              => 0755,
  decode_subject     => 1,
  check_content_type => 1,
  exclude_types      => ["image/gif", "image/jpeg", "image/png"],
);
]]></verbatim>
<verbatim><![CDATA[
print "Number of messages: ", $explode->nmsgs, "\n";
]]></verbatim>
<verbatim><![CDATA[
open(MAIL, "<file.mbox") or
  die("Couldn't open file.mbox for reading: $!\n");
open(OUTPUT, ">file.tmp")
  or die("Couldn't open file.tmp for writing: $!\n");
my $headers = $explode->parse(\*MAIL, \*OUTPUT);
close(OUTPUT);
close(MAIL);
]]></verbatim>
<verbatim><![CDATA[
for my $part (sort{ $a cmp $b } keys(%{$headers})) {
  for my $k (keys(%{$headers->{$part}})) {
    if(ref($headers->{$part}->{$k}) eq "ARRAY") {
      for my $i (0 .. $#{$headers->{$part}->{$k}}) {
        print "$part => $k => $i => ", $headers->{$part}->{$k}->[$i], "\n";
      }
    } elsif(ref($headers->{$part}->{$k}) eq "HASH") {
      for my $ks (keys(%{$headers->{$part}->{$k}})) {
        if(ref($headers->{$part}->{$k}->{$ks}) eq "ARRAY") {
          print "$part => $k => $ks => ", join(($ks eq "charset") ? " " : "", @{$headers->{$part}->{$k}->{$ks}}), "\n";
        } else {
          print "$part => $k => $ks => ", $headers->{$part}->{$k}->{$ks}, "\n";
        }
        print "$part => $k => $ks => ", $headers->{$part}->{$k}->{$ks}, "\n";
      }
    } else {
      print "$part => $k => ", $headers->{$part}->{$k}, "\n";
    }
  }
}
]]></verbatim>
</sect1>
<sect1>
<title>説明</title>
<para>
MIME::ExplodeはシングルあるいはマルチパートのMIMEメッセージを
解析、デーコードし、そのデコードされた構成物を与えられたディレクトリに
出力するためのモジュールです。
つまりこのモジュールは、ユーザーがMIMEでエンコードされたeメール・
メッセージやメールボックスの添付ファイルを取り出すことを可能にします。
</para>
</sect1>
<sect1>
<title>メソッド</title>
<sect2>
<title>new([, OPTION ...])</title>
<para>
このメソッドは新しいMIME::Explodeオブジェクトを作成します。以下のキーを
利用することができます:
</para>
<list>
<item><itemtext>output_dir</itemtext>
<para>
デコードされたファイルが置かれるディレクトリ
</para>
</item>
<item><itemtext>mkdir =&gt; octal_number</itemtext>
<para>
値に8進数の数字が設定されていれば、output_dirディレクトリを作成します。
(例: mkdir =&gt; 0755).
</para>
</item>
<item><itemtext>check_content_type =&gt; 0 あるいは 1</itemtext>
<para>
値が1に設定されると、ファイルのcontent-typeがチェックされます。
</para>
</item>
<item><itemtext>decode_subject =&gt; 0 あるいは 1</itemtext>
<para>
値が1に設定されると、件名がリストにデコードされます。
</para>
<verbatim><![CDATA[
$header->{'0.0'}->{subject}->{value} = [ARRAYREF];
$header->{'0.0'}->{subject}->{charset} = [ARRAYREF];
$subject = join("", @{$header->{'0.0'}->{subject}->{value}});
]]></verbatim>
</item>
<item><itemtext>exclude_types =&gt; [ARRAYREF]</itemtext>
<para>
指定されたcontent-typeのファイルを保存しません。
</para>
</item>
</list>
</sect2>
<sect2>
<title>parse(FILEHANDLE, FILEHANDLE)</title>
<para>
このメソッドはストリムを解析し、それを構成している要素に分割します。
このメソッドは全ての部品を持ったハッシュ・リファレンスを返します。
FILEHANDLEはBLOBへのリファレンスでなければなりません。
2番目の引数はオプションです。
</para>
</sect2>
<sect2>
<title>nmsgs()</title>
<para>
解析されたメッセージの数を返します。
</para>
</sect2>
</sect1>
<sect1>
<title>作者</title>
<para>
Henrique Dias &lt;hdias@esb.ucp.pt&gt;
</para>
</sect1>
<sect1>
<title>参考資料</title>
<para>
MIME::Tools, perl(1).
</para>
</sect1>
<sect1>
<title>翻訳者</title>
<para>
川合孝典 (kwitknr@cpan.org)
</para>
</sect1>
</pod>
