1 |
|
2 |
=encoding euc-jp |
3 |
|
4 |
=head1 名前 |
5 |
|
6 |
MIME::Explode - MIMEメッセージを解体するためのPerl拡張 |
7 |
|
8 |
=head1 概要 |
9 |
|
10 |
use MIME::Explode; |
11 |
|
12 |
my $explode = MIME::Explode->new( |
13 |
output_dir => "tmp", |
14 |
mkdir => 0755, |
15 |
decode_subject => 1, |
16 |
check_content_type => 1, |
17 |
exclude_types => ["image/gif", "image/jpeg", "image/png"], |
18 |
); |
19 |
|
20 |
print "Number of messages: ", $explode->nmsgs, "\n"; |
21 |
|
22 |
open(MAIL, "<file.mbox") or |
23 |
die("Couldn't open file.mbox for reading: $!\n"); |
24 |
open(OUTPUT, ">file.tmp") |
25 |
or die("Couldn't open file.tmp for writing: $!\n"); |
26 |
my $headers = $explode->parse(\*MAIL, \*OUTPUT); |
27 |
close(OUTPUT); |
28 |
close(MAIL); |
29 |
|
30 |
for my $part (sort{ $a cmp $b } keys(%{$headers})) { |
31 |
for my $k (keys(%{$headers->{$part}})) { |
32 |
if(ref($headers->{$part}->{$k}) eq "ARRAY") { |
33 |
for my $i (0 .. $#{$headers->{$part}->{$k}}) { |
34 |
print "$part => $k => $i => ", $headers->{$part}->{$k}->[$i], "\n"; |
35 |
} |
36 |
} elsif(ref($headers->{$part}->{$k}) eq "HASH") { |
37 |
for my $ks (keys(%{$headers->{$part}->{$k}})) { |
38 |
if(ref($headers->{$part}->{$k}->{$ks}) eq "ARRAY") { |
39 |
print "$part => $k => $ks => ", join(($ks eq "charset") ? " " : "", @{$headers->{$part}->{$k}->{$ks}}), "\n"; |
40 |
} else { |
41 |
print "$part => $k => $ks => ", $headers->{$part}->{$k}->{$ks}, "\n"; |
42 |
} |
43 |
print "$part => $k => $ks => ", $headers->{$part}->{$k}->{$ks}, "\n"; |
44 |
} |
45 |
} else { |
46 |
print "$part => $k => ", $headers->{$part}->{$k}, "\n"; |
47 |
} |
48 |
} |
49 |
} |
50 |
|
51 |
=head1 説明 |
52 |
|
53 |
MIME::ExplodeはシングルあるいはマルチパートのMIMEメッセージを |
54 |
解析、デーコードし、そのデコードされた構成物を与えられたディレクトリに |
55 |
出力するためのモジュールです。 |
56 |
つまりこのモジュールは、ユーザーがMIMEでエンコードされたeメール・ |
57 |
メッセージやメールボックスの添付ファイルを取り出すことを可能にします。 |
58 |
|
59 |
=head1 メソッド |
60 |
|
61 |
=head2 new([, OPTION ...]) |
62 |
|
63 |
このメソッドは新しいMIME::Explodeオブジェクトを作成します。以下のキーを |
64 |
利用することができます: |
65 |
|
66 |
=over 5 |
67 |
|
68 |
=item output_dir |
69 |
|
70 |
デコードされたファイルが置かれるディレクトリ |
71 |
|
72 |
=item mkdir => octal_number |
73 |
|
74 |
値に8進数の数字が設定されていれば、output_dirディレクトリを作成します。 |
75 |
(例: mkdir => 0755). |
76 |
|
77 |
=item check_content_type => 0 あるいは 1 |
78 |
|
79 |
値が1に設定されると、ファイルのcontent-typeがチェックされます。 |
80 |
|
81 |
=item decode_subject => 0 あるいは 1 |
82 |
|
83 |
値が1に設定されると、件名がリストにデコードされます。 |
84 |
|
85 |
$header->{'0.0'}->{subject}->{value} = [ARRAYREF]; |
86 |
$header->{'0.0'}->{subject}->{charset} = [ARRAYREF]; |
87 |
$subject = join("", @{$header->{'0.0'}->{subject}->{value}}); |
88 |
|
89 |
=item exclude_types => [ARRAYREF] |
90 |
|
91 |
指定されたcontent-typeのファイルを保存しません。 |
92 |
|
93 |
=back |
94 |
|
95 |
=head2 parse(FILEHANDLE, FILEHANDLE) |
96 |
|
97 |
このメソッドはストリムを解析し、それを構成している要素に分割します。 |
98 |
このメソッドは全ての部品を持ったハッシュ・リファレンスを返します。 |
99 |
FILEHANDLEはBLOBへのリファレンスでなければなりません。 |
100 |
2番目の引数はオプションです。 |
101 |
|
102 |
|
103 |
=head2 nmsgs() |
104 |
|
105 |
解析されたメッセージの数を返します。 |
106 |
|
107 |
=head1 作者 |
108 |
|
109 |
Henrique Dias <hdias@esb.ucp.pt> |
110 |
|
111 |
=head1 参考資料 |
112 |
|
113 |
MIME::Tools, perl(1). |
114 |
|
115 |
=head1 翻訳者 |
116 |
|
117 |
川合孝典 (kwitknr@cpan.org) |